【发布时间】: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