2012-01-16 105 views
-2

我有一个网络驱动程序测试,它打开了一个单击链接的javascript确认,但测试一旦出现确认就卡住了。测试中剩余的代码行不会执行,直到我在确认框中手动单击“确定”或“取消”。请参阅下面的代码:当弹出窗口出现时,测试卡住了

private WebDriver webDriver; 

@Test 
public void testClickButton() { 

webDriver = getFireFoxDriver(); 

webDriver.findElement(By.xpath("//a[text() = 'Delete']")).click(); 

//JAVASCRIPT CONFIRMATION COMES UP AND THE TEST GETS STUCK! 
//THE BELOW LINE DOES NOT EXECUTE UNTIL THE CONFIRMATION IS MANUALLY CLICKED. 
closePopUp(); 
} 

我只在Firefox上遇到这个问题。测试在IE和Chrome上运行良好。

发布了一个类似的问题@WebDriver closing the popup其中使用java脚本静默弹出窗口被建议作为解决方法。这看起来像一个有趣的方式来解决这个问题,但我想知道是否有任何替代它,而不使用Java脚本。这可能有助于我理解这个问题的根源。我试图在链接点击后等待几毫秒,但它没有帮助。 Google也做了很多搜索,这也没有帮助。

任何想法?

+0

你对javascript有什么? – Anders 2012-01-16 15:39:30

回答

1

我接受弹出这种方式来关闭它:

Alert alert = driver.switchTo().alert(); 
alert.accept(); 

它不是Java脚本,但它的工作原理。您也可以关闭弹出窗口。

+0

感谢您的回复Tarken。这正是我在上面的'closePopUp()'方法调用中所做的。但问题在于,'closePopUp()'调用不会被执行,因为一旦弹出窗口出现,测试就会卡住。 – dgd 2012-01-16 08:18:56

+0

你弹出一个新窗口吗?你的closePopUp是否知道驱动程序?如果是,你可以发布更多的代码吗? – Tarken 2012-01-16 09:26:18

+0

弹出窗口只是一个用于删除Web应用程序中特定实体的javascript确认。请在下面找到closePopUp方法代码: 'public void closePopUp(){ try {alert} alert = webDriver.switchTo()。alert(); System.out.println(alert.getText()); alert.accept(); (NoAlertPresentException exc){ exc.printStackTrace(); }' 请考虑'webDriver'作为分配给Firefox驱动程序的类级变量。 – dgd 2012-01-16 10:14:05