滚动在 Internet Explorer 中不起作用

Posted

技术标签:

【中文标题】滚动在 Internet Explorer 中不起作用【英文标题】:Scroll not working in Internet Explorer 【发布时间】:2014-07-12 22:15:54 【问题描述】:

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

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

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

【问题讨论】:

为什么要否决这个问题? 【参考方案1】:

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

【讨论】:

你确定它有效吗?我在 IE10 上试过,但它不起作用? 是的,它有效。您应该从您的项目中发布代码,您可能会遇到不同的问题。 @user3209160 我正在使用 javascript 执行器从 java selenium 测试中运行 javascript 代码。 我的代码是这样的: ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,"+i+""); 并且 i 在 for 循环中递增 @user3209160 尽可能多地发布相关代码在您的问题中作为编辑【参考方案2】:

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

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

面临类似的问题。这对我来说是所有浏览器中window.scrollTo JS 方法的替代方法。

【讨论】:

【参考方案3】:

我遇到了同样的问题,但使用的是 IE 9。

我发现了

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

没用,但是

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

确实有效。注意“;”在执行命令的末尾。

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

以上是关于滚动在 Internet Explorer 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

OpenLayers:在 Internet Explorer 中不起作用

为啥 .filter() 在 Internet Explorer 8 中不起作用?

Window.location 在 Internet Explorer 中不起作用

CSS 悬停图像链接在 Internet Explorer 中不起作用

Webfont 在 Internet Explorer 中不起作用

悬停在 Internet Explorer 中不起作用