我正在使用Selenium WebDriver來自動化我的公司網站。在一個點上,web應用程序中打開通過下一個新的窗口:Selenium IEServerDriver找不到IE9的新窗口
<a onclick="WindowController.openWindow('quote.action?quoteProcessName=Shortform',WindowController.WINDOW_IS_TRACKED);" tabindex="1">Express Quote</a>
我們使用jQuery
,但我認爲這是習俗。我在測試團隊,不做任何網站的開發。無論如何,它使用JavaScript打開一個新窗口。腳本點擊這個鏈接後,我需要它連接到新窗口。
問題是WebDriver在IE9中運行時似乎沒有找到新窗口。下面是我使用的嘗試,並切換到新窗口中的代碼:
public boolean switchTo(final WebRobot robot, final String pageTitle) {
boolean found = false;
int count = 0;
while (!found && count < 20) {
final Set<String> handles = robot.getDriver().getWindowHandles();
final Iterator<String> itr = handles.iterator();
while (itr.hasNext()) {
try {
final String current = itr.next();
robot.getDriver().switchTo().window(current);
if (robot.getDriver().getTitle().contains(pageTitle)) {
robot.getLogger().debug("Switching to " + pageTitle);
found = true;
}
} catch (final NoSuchWindowException e) {
count++;
try {
Thread.sleep(2000);
System.out.println("Handles: " + robot.getDriver().getWindowHandles().size());
} catch (final InterruptedException ignored) {
//Nothing to do here
}
}
}
}
return found;
}
(WebRobot是我寫的,讓我輕鬆切換瀏覽器和執行模式與webdriver的一類robot.getDriver()返回Selenium WebDriver對象)。
新窗口打開後,robot.getDriver()。getWindowHandles()。size()永遠是1.是否有東西我缺少拿起新窗口?
此代碼完美適用於Firefox,Chrome和IE8,但不支持IE9。我使用的是IEDriverServer版本爲2.32.3.0的64位版本。我使用Selenium WebDriver 2.32,並在Windows 7 64位上運行。
您的'System.out.println()'調用** ever **顯示窗口句柄計數> 1嗎?我可以理解它從來沒有找到窗口,因爲你永遠不會刷新循環內'handles'的內容,所以它總是會有一組窗口句柄被初始化,這可能是一個單獨的句柄。 – JimEvans 2013-04-25 17:07:29
更新了代碼以刷新每次迭代的句柄。仍然只看到原來的窗口。 – Merkidemis 2013-04-25 19:45:39
我可以斷言,全局的窗口檢測並不是全部打破,對於所有頁面,無處不在。您可以嘗試增加IEDriverServer.exe日誌記錄的詳細程度(在您的語言選擇中搜索網頁以瞭解如何執行此操作),或提供一個演示此問題的完整示例(包括完整的HTML頁面)。 – JimEvans 2013-04-26 14:02:57