【发布时间】:2021-09-22 18:34:18
【问题描述】:
我在 Groovy 中使用 ChromeDriver,以便澄清。
我知道,如果您保存一个元素,页面发生更改然后您尝试访问它,您通常会收到过时元素异常。 但我的问题是,当我刚刚得到它时,我有时会随机得到这个错误。
我的代码如下所示:
def elem = new WebDriverWait(driver, timeout).until(ExpectedConditions.elementToBeClickable(By.xpath(xpath)))
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", elem)
elem.click()
我在 elem.click() 上得到了异常,这对我来说毫无意义。
【问题讨论】:
-
DOM 要么仍在更新,要么在滚动后更新。你可能不需要那个卷轴。 click 方法将自动滚动到视图中。如果需要,您可以尝试/捕获单击调用...如果捕获到陈旧元素异常,请重新获取该元素。 (或者只是在滚动后或获取元素之前使用一段时间的睡眠,具体取决于导致过时元素的原因。)
-
我添加了滚动条,因为它帮助我防止了其他一些异常,但这可能完全是一个不同的问题。
标签: java selenium grails groovy selenium-chromedriver