我试图用一个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