【发布时间】:2015-11-16 13:37:26
【问题描述】:
我在内部网站上自动执行测试时遇到问题。在某些情况下,弹出窗口会冻结测试,直到我手动关闭弹出窗口。打开弹窗后,没有运行任何代码,甚至 System.out.println 的也不运行。
driver.findElement(By.id("top_toolbarSALTkA7_Aras_Tbi_promote")).click();
System.out.println("test");
我尝试了多种处理弹出窗口的方法,但是在 click() 之后根本没有运行任何代码,而且似乎永远不会超时。
试过了:
1.
((JavascriptExecutor) driver).executeScript("return document.getElementById('top_toolbarSALTkA7_Aras_Tbi_promote', 'onClick')");
2.
Set<String> windowHandles = driver.getWindowHandles();
for(String handle : windowHandles)
{
driver.switchTo().window(handle);
if (driver.getTitle().contains(title))
{
System.out.println("- (Page title is: " + driver.getTitle() + ")");
break;
}
}
3.
driver.switchTo().alert();
4.
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
如果我关闭弹出窗口,测试将继续 System.out.println,然后继续直到完成。
我使用 Selenium Webdriver 2.48.2 和 FireFox 31.0,编程是 Java。有什么想法可以做什么? (无法更改网站)
【问题讨论】:
-
您使用什么 webdriver 绑定?当我使用 webdriverJS 并且我想将 javascript 注入浏览器时,我使用
executeAsycScript()而不是executeScript()- 它需要一个回调 - 你调用它来明确告诉 webdriver - 客户端 JS 已经完成 - 现在继续运行其余的测试 -
对不起,我忘了说!我正在使用 java
-
现在尝试使用这个而不是 executeScript(),没有变化:
((JavascriptExecutor) driver).executeAsyncScript("return document.getElementById('top_toolbarSALTkA7_Aras_Tbi_promote', 'onClick')"); -
不是说烦人,而是你试过 driver.switchTo().alert() .accept() ;而不仅仅是 driver.switchTo().alert();
-
是的,我尝试了很多上述示例的组合,我很绝望:) 现在又试了一次,只是为了确定,但还是不行。
标签: selenium selenium-webdriver