我試圖用一個JavascriptExecutor來自硒的webdriver在IE9中打開一個新標籤:硒JavascriptExecutor上IE9會導致「元素沒有滾動到視」錯誤
public void openTab() {
String url = webDriver.getCurrentUrl();
String script = "var a=document.createElement('a');a.target='_blank';a.href='" + url + "';a.innerHTML='open';document.body.appendChild(a);return a";
Object element = getJSExecutor().executeScript(script);
if (element instanceof WebElement) {
WebElement anchor = (WebElement) element;
anchor.click();
} else {
throw new RuntimeException("Unable to open tab: " + url);
}
}
這工作在Chrome罰款但在IE9中運行時,出現以下錯誤:
ElementNotVisibleException:驅動程序試圖單擊該元素的位置未滾動到視口中。
我使用硒和IEDriverServer的2.31版本。
IE可能沒有時間呈現您添加到DOM的元素,因此它的座標不在瀏覽器視口內。在調用'click()'之前,你可以嘗試稍微等一下,看看它是否有效。但是,IE驅動程序可能不會識別新標籤。即使它確實認可它,嘗試點擊新標籤中的任何元素可能由於焦點問題而無法工作。我擔心你可能會試圖實現[這篇文章]的解決方法(http://stackoverflow.com/questions/6421988/webdriver-open-new-tab),這是完全錯誤的方法。 – JimEvans 2013-03-06 22:09:52
我想實現該解決方法,因爲我必須使用選項卡進行測試,並且這是使用webdriver這樣做的唯一方法。正如我所說的,這種方法在Chrome中運行得非常好,並且webdriver getWindowHandles()和switchTo()方法確實允許在標籤頁/窗口之間切換。 – Jess 2013-03-07 11:06:10
通常情況下,我只是讓這個去,但「不得不使用標籤」真的蹭我錯了。我無法想象在新選項卡中打開頁面不等於在新窗口中打開的任何要求。如果用戶將瀏覽器設置設置爲強制頁面在新窗口中打開,該怎麼辦? – JimEvans 2013-03-07 12:06:36