Java 滚动屏幕上的wierd行为

Java 滚动屏幕上的wierd行为,java,javascript,selenium,scroll,ui-automation,Java,Javascript,Selenium,Scroll,Ui Automation,我正在研究ui自动化,最近发现了一个有趣的行为。 有时我需要滚动到某个特定的元素,我一直在使用JS函数滚动到元素和动作。moveToElement(WebElement) 这似乎适用于任何复选框、文本框、按钮类型的元素,但当我需要移动到具有多列的表的表单元格()时,请注意,表正在向左移动,几乎每次都会发生这种情况。假设有一个表5x5,我只在第5列上循环,当我通过这两个函数中的任何一个执行scroll2element时,整个表都变得一团糟。前面的所有列都将消失,我的第五列将一直向左移动 我找到了解

我正在研究ui自动化,最近发现了一个有趣的行为。 有时我需要滚动到某个特定的元素,我一直在使用JS函数滚动到元素和动作。moveToElement(WebElement)

这似乎适用于任何复选框、文本框、按钮类型的元素,但当我需要移动到具有多列的表的表单元格()时,请注意,表正在向左移动,几乎每次都会发生这种情况。假设有一个表5x5,我只在第5列上循环,当我通过这两个函数中的任何一个执行scroll2element时,整个表都变得一团糟。前面的所有列都将消失,我的第五列将一直向左移动


我找到了解决办法——我没有滚动到特定的表格单元格,而是滚动到位于该表格顶部的按钮,只是出于好奇,如果有人遇到这样的问题,他们会怎么做?谢谢

我想问题可能出在选择器上

试着在XPath上使用CSS选择器,根据我的生活经验,XPath不如CSS好用

而且我一直在使用JS,从来没有遇到过任何问题

试试看

   WebElement x = driver.findElement(by);
        ((JavascriptExecutor) driver).executeScript(
                "arguments[0].scrollIntoView();", x);

您遇到的问题可能是由多种原因造成的。这可能是您正在使用的页面的JavaScript中的一个bug(您已经使用了解决方案)。这可能是因为您并没有像您认为的那样使用Selenium脚本。这将是一个时间问题(不是等待正确的事件)。通常,我在创建驱动程序实例时将窗口设置为最大化。它似乎解决了很多这样的滚动问题。好的,我的窗口被最大化了,当我滚动到元素时,我通过wait.until(ExpectedConditions.visibilityOfElement(By…)找到了这个元素所以我非常确定它应该是正常的,即使我添加了一些thread.sleep在驱动程序找到元素后滚动到它,我也会看到这个问题。这就是js函数:WebElement x=wait.until(ExpectedConditions.visibilityOfElementLocated(by));(JavascriptExecutor)driver.executeScript(“参数[0].scrollIntoView();”,x);action.moovetoelement也有同样的功能。你是说我的项目中的JS中有错误吗?@Gino如果没有看到你的脚本和你试图处理的页面,就无法判断。否则,我们只是猜测而已。