在Internet Explorer中无法滚动

4

我在Internet Explorer 10上使用JavaScript尝试使用scroll(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个回答

2
正确的语法应该是window.scrollTo(xpos,ypos)。这在所有主要的浏览器中都可以使用,可以在这里了解更多关于此函数的信息。

你确定它能工作吗?我尝试在IE10上使用,但它不起作用。 - anirudh_raja
是的,它有效。你应该发布你项目中的代码,你可能遇到了不同的问题。@user3209160 - Jordan.J.D
我正在使用JavaScript执行器,从Java Selenium测试中运行JavaScript代码。 - anirudh_raja
我的代码类似于:((JavascriptExecutor) driver).executeScript("window.scrollTo(0,"+i+"");,而且 i 在 for 循环中递增。 - anirudh_raja
请尽可能在您的问题中作为编辑发布尽可能多相关代码。 - Jordan.J.D
Edited the question :) - anirudh_raja

2
为什么不尝试像这样使用scrollIntoView来滚动到元素?
JavascriptExecutor jse=(JavascriptExecutor)driver;
jse.executeScript("document.getElementById(<id>).scrollIntoView(true)");

我遇到过类似的问题。以下方法是在所有浏览器中替代window.scrollTo JS方法的有效方法。


0

我也遇到了同样的问题,但是是在IE 9上。

我发现

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

没有起作用,但是

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

已经工作。请注意执行命令末尾的“;”符号。


0

显然,在某些版本的IE10中存在与JavascriptExecutor相关的问题。 这里 提供了一个可能的解决方法,但我自己还没有尝试过。


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);

这两种方法都可以将元素滚动到屏幕中心。

别忘了将所需的定位符替换为element


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接