滚动无法在Internet Explorer中工作

时间:2014-05-23 13:56:24

标签: java javascript html css selenium-webdriver

我在Internet Explorer 10中尝试使用javascript滚动(x,y)。但是,当我尝试执行网站脚本时,它不起作用。在IE中相同的是什么?它是Java Selenium测试的一部分。我需要在页面中滚动。所以,我通过使用javascript执行器执行javascript代码来实现这一点。

for(int i=0;i<X;i+=Y)   
String cmd = "window.scrollTo(0,"+i+")";    
((JavascriptExecutor) driver).executeScript(cmd);

我在测试中使用上面的代码来滚动页面。但是,在Internet Explorer IE10中,它不起作用。

5 个答案:

答案 0 :(得分:2)

正确的语法是window.scrollTo(xpos,ypos)。这适用于所有主流浏览器,请阅读函数here

答案 1 :(得分:2)

为什么不尝试scrollIntoView这样的元素

JavascriptExecutor jse=(JavascriptExecutor)driver;
jse.executeScript("document.getElementById(<id>).scrollIntoView(true)");

面临类似的问题。这适用于我作为所有浏览器中window.scrollTo JS方法的替代方法。

答案 2 :(得分:0)

我有同样的问题,但使用IE 9。

我找到了

executeScript("window.scrollTo(0,100)")

没有用,但是

executeScript("window.scrollTo(0,100);")

确实有效。注意“;”在执行的命令结束时。

答案 3 :(得分:0)

显然,在某些版本的IE10中,JavascriptExecutor存在问题。 Here提供了一种可行的解决方法,但我自己没有尝试过。

答案 4 :(得分:0)

我使用以下方法在 Internet Explorer 的情况下滚动(其中 element 是 WebElement 的引用,需要滚动到屏幕中心):

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
((JavascriptExecutor) driver).executeScript("window.scrollBy(0,-300)", "");

对于其他浏览器,我使用的是:

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView({block: \"center\"});", element);

这两者都会将元素滚动到屏幕中心。

不要忘记替换所需的定位器而不是元素