【问题标题】:My script is not running successfully every time. After running sometimes it runs successfully for 1 time and next time when I run again it fails我的脚本每次都没有成功运行。有时运行后它会成功运行 1 次,下次我再次运行时它会失败
【发布时间】:2012-12-15 10:00:05
【问题描述】:

我的脚本每次都没有成功运行。有时运行后它会成功运行 1 次,下次我再次运行时它会失败。 包示例;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class Script1 
{
public static void main(String args[])throws Exception
{
    //Take the data from input xls file
    FileInputStream fi =new FileInputStream("D:\\selenium_test\\Object 
       Repositoty\\Input\\Login1.xls");
    Workbook wb = Workbook.getWorkbook(fi);
    Sheet sh = wb.getSheet(0);

    //Create the Result xls file
    FileOutputStream fo = new FileOutputStream("D:\\selenium_test\\Object   
  Repositoty\\Output\\Login_Results1.xls");
    WritableWorkbook wwb = Workbook.createWorkbook(fo);
    WritableSheet ws = wwb.createSheet("Results", 0);
    Thread.sleep(20000);

    String msg = "";

    WebDriver driver = new InternetExplorerDriver();
    driver.get("https://www.700creditsolution.com");
    driver.manage().window().maximize();
    Set<String> windowids = driver.getWindowHandles();
    Iterator<String> iter= windowids.iterator();
    for (int i = 1; i < sh.getRows(); i++)
    {   
    while(iter.hasNext())
    {
        System.out.println("Main Window ID : "+iter.next());
    }
    driver.findElement(By.id("lgnLogin_UserName")).clear();
    driver.findElement(By.id("lgnLogin_UserName")).sendKeys(sh.getCell(0, 
    i).getContents());
    driver.findElement(By.id("lgnLogin_Password")).clear();
    driver.findElement(By.id("lgnLogin_Password")).sendKeys(sh.getCell(1, 
  i).getContents());
    driver.findElement(By.id("lgnLogin_LoginButton")).click();
    Thread.sleep(5000L);

    windowids = driver.getWindowHandles();
    iter= windowids.iterator();
    String main_windowID=iter.next();
    String tabbed_windowID=iter.next();
    System.out.println("Main Window ID :" +main_windowID);
    Thread.sleep(2000);
    //switch over to pop-up window
    driver.switchTo().window(tabbed_windowID);

    System.out.println("Pop-up window Title : "+driver.getTitle());
    driver.findElement(By.xpath("//*[@id='BtnClose']")).click();
    Thread.sleep(1000);
    driver.switchTo().window(main_windowID);
    msg= driver.findElement(By.xpath("//table[@id='lgnLogin']/tbody/tr/td/table
  /tbody/tr[4]/td")).getText();
    System.out.println(msg);
    Thread.sleep(2000);

//  driver.get("https://www.700creditsolution.com");
//  Thread.sleep(2000);

    for (int j = 0; j < sh.getColumns(); j++) 
    {
        Label lab=new Label(j,i,sh.getCell(j, i).getContents());    
        ws.addCell(lab);
        Label result = new Label(2,i, msg);
        ws.addCell(result); 
        String c2String = sh.getCell(2, i).getContents().toString();
        if(c2String.equalsIgnoreCase(msg))
        {
            Label status=new Label(3,i,"Pass");
            ws.addCell(status);
        }
        else
        {
            Label status=new Label(3,i,"Fail");
            ws.addCell(status);
        }
    }
    }

    Label un=new Label(0,0,"User ID");
    Label pw=new Label(1,0,"Password");
    Label rs=new Label(2,0,"Results");
    Label st=new Label(3,0,"Status");
    ws.addCell(un);
    ws.addCell(pw);
    ws.addCell(rs);
    ws.addCell(st);
            wwb.write();
            wwb.close();

    driver.quit();

}   
}

请尽快帮助我解决这个问题。在我的系统中我有windows7,IE9。我的应用程序最好只在 IE 中支持。我们将不胜感激。

【问题讨论】:

  • 脚本失败时的错误是什么?
  • 此位置出现错误。 driver.findElement(By.xpath("//*[@id='BtnClose']")).click();显示的错误消息是“log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager)。log4j:WARN 请正确初始化 log4j 系统。主窗口 ID : ac70653a-8834- 4843-bfde-16b229beed98 主窗口 ID : 28deebd4-025e-4eaa-8c66-e59e24e39332 主窗口 ID :ac70653a-8834-4843-bfde-16b229beed98 弹出窗口标题 : Disable User Alert Disabled Due to InActivity
  • 主窗口 ID:8b92c617-8072-4b25-aa11-47fdc0b54477 弹出窗口标题:700Dealers Inc. 线程“main”中的异常 org.openqa.selenium.NoSuchElementException:无法使用 xpath 找到元素== //*[@id='BtnClose'] (警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:280 毫秒有关此错误的文档,请访问:seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:' 2.21.0',修订:'16552',时间:'2012-04-11 19:08:38'系统信息:os.name:'Windows 7',os.arch:'x86',os.version:' 6.1', java.version:'1.6.0_23'
  • 驱动程序信息:driver.version:sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 上 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 上 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown) 上的 RemoteWebDriver源)在 java.lang.reflect.Constructor.newInstance(未知源)在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:175) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler. java:128)
  • at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:459) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:227) at org.openqa .selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:312) at org.openqa.selenium.By$ByXPath.findElement(By.java:344) at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java :219) 在 Example.Script1.main(Script1.java:62) 请找到上面 3 cmets 中显示的错误消息。感谢您的回复。

标签: webdriver selenium-webdriver


【解决方案1】:

您在代码中没有处理任何一个异常。

运行脚本,如果失败尝试理解异常,为什么会产生异常并正确处理它,重复这个直到你处理完所有的异常。谢谢。

【讨论】:

  • 感谢您的回复。我已经尝试使用 Try & Catch 方法来处理异常,但是它仍然给我错误。 catch (NoSuchElementException e) { System.out.println("元素错误:" +e); e.printStackTrace(); } catch (WebDriverException f) { System.out.println("WebDriver 错误:" +f); f.printStackTrace(); // f.toString(); } catch (Throwable any) { System.out.println("Java ERROR: "+any); any.printStackTrace(); }
  • 捕获异常是不够的。你必须妥善处理它们。
  • 感谢您的回复。你能帮我弄清楚如何处理异常吗?因为我是 Java 和 Webdriver 的新手。
  • 如果发生异常,您必须找出它发生的原因,并编写代码以避免它在将来发生。谢谢。
猜你喜欢
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
相关资源
最近更新 更多