滚动在 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 中不起作用