【问题标题】:How to check if an element is into view using Selenium WebDriver?如何使用 Selenium WebDriver 检查元素是否在视图中?
【发布时间】:2020-04-06 13:36:25
【问题描述】:

我必须检查一个元素是否在视图中,如果没有,则只有使用以下功能将其滚动到视图中,然后与之交互 -

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);

如果元素在视图中,则不要执行上述命令。要检查元素是否在视图中,isDisplayed() 没有帮助,因为无论元素是否在视图中,它都会返回 true。

您能否建议如何检查某个元素是否在视图中?

【问题讨论】:

标签: javascript selenium selenium-webdriver webdriver js-scrollintoview


【解决方案1】:

要与元素交互,该元素需要在Viewport 内。如果元素不在 Viewport 内,你必须 scroll() 如下:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);

你可以在What is the difference between the different scroll options?找到关于不同滚动选项的详细讨论


此时值得一提的是,以下方法:

在执行之前会自动滚动视口中的元素。

您可以在Selenium python Error: element could not be scrolled into view找到详细讨论


最后,在极少数情况下,如果 HTML DOM 包含 AngularReact 元素,您甚至可能必须在尝试为 visibilityOfElementLocated() 诱导 WebDriverWait滚动如下:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.nsg-button"))));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2011-02-14
    • 2012-06-11
    相关资源
    最近更新 更多