【发布时间】:2015-04-14 03:04:40
【问题描述】:
我正在研究 UI 自动化,最近发现了一种有趣的行为。 有时我需要滚动到某个特定元素,我一直在使用 JS 函数滚动到元素和 actions.moveToElement(WebElement)
这似乎适用于任何复选框、文本框、按钮类型的元素,但是当我需要移动到具有多列的表格的表格单元格 () 时 - 看到表格正在向左移动,就会发生这种情况几乎每次。假设有一个 5x5 的表,当我通过这两个函数中的任何一个执行 scroll2element 时,我只循环第 5 列 - 整个表都搞砸了。之前的所有列都会消失,我的第 5 列一直向左移动。
我找到了解决方法 - 我没有滚动到特定的表格单元格,而是滚动到位于该表格顶部的按钮,但出于好奇,如果有人遇到这样的问题,他们做了什么?谢谢
【问题讨论】:
-
您遇到的问题可能是由多种原因引起的。这可能是您正在使用的页面的 JavaScript 中的错误(您已经使用解决方案解决了该错误)。可能是您没有做您认为您正在使用您的 Selenium 脚本所做的事情。这将是一个时间问题(不等待正确的事件)。
-
一般情况下,我在创建驱动程序实例时将窗口设置为最大化。它似乎解决了很多此类滚动问题。
-
好的,所以我的窗口最大化了,当我滚动到元素时,我通过 wait.until(ExpectedConditions.visibilityOfElement(By..) 找到这个元素所以我非常确定它应该没问题,即使我在驱动程序找到元素后添加一些thread.sleep,当我滚动到它时,我也会看到这个问题。这就是js函数:WebElement x =wait.until(ExpectedConditions.visibilityOfElementLocated(by));( (JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", x); action.moovetoelement 也是如此。你是说我的项目中的 JS 有错误吗?
-
@Gino 如果没有看到您的脚本和您尝试处理的页面,就无法判断。否则,我们只是猜测。
标签: java javascript selenium scroll ui-automation