1

我正在使用 Firefox 11 + WebDriver 2.21.0 / WebDriver 2.22.0(都试过了)。

在我的场景中,当我单击一个选项卡时,它会打开一个确认框,然后单击OK它开始从服务器加载新选项卡。

所以我将这种情况处理为:

driver.findElement(By.id("myTab")).click();
driver.switchTo().alert().accept();

但是在单击“mytab”后,它会无限期地等待窗口加载。所以它没有出现alert.accept(),浏览器等待接受确认对话框来加载新页面,所以我最终陷入了死锁状态。

此代码在 Internet Explorer 中运行良好。

请帮忙,这种情况怎么处理?

4

1 回答 1

0

先生,您可能在 Selenium WebDriver 中发现了一个错误(或至少是一个不一致的地方)。

看看这里有没有发现过,如果没有,请随意归档

同时,您可以尝试使用“不稳定”加载策略进行FirefoxDriver加载,然后(如果还不够)可能driver.manage().timeouts().pageLoadTimeout()(仅适用于具有“不稳定”设置的 Firefox)。

作为一种解决方法,您可以尝试通过 JavaScript 单击选项卡 - 尽管我不确定它是否会起作用:

((JavascriptExecutor)driver).executeScript("document.getElementById('myTab').click()");


编辑:

作为另一种解决方法(受 Selenium RC 启发),您可以做些什么,您可以暂时禁用确认对话框...

// assuming your driver can handle JS ;)
JavascriptExecutor js = (JavascriptExecutor)driver;

// stores the original confirm() function and replaces it
js.executeScript("window.originalConfirm = window.confirm;" 
        + "window.confirm = function(m) { return true; };");

driver.findElement(By.id("myTab")).click();
// it should not even fire the confirm and just proceed

// get the confirm back
js.executeScript("window.confirm = window.originalConfirm;");
于 2012-06-09T00:50:51.413 回答