我在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中,它不起作用。
答案 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);
这两者都会将元素滚动到屏幕中心。
不要忘记替换所需的定位器而不是元素。