【问题标题】:How to check whether an element on the DOM is in the foreground in Selenium using Java?如何使用Java检查DOM上的元素是否在Selenium的前台?
【发布时间】:2018-01-08 18:38:42
【问题描述】:

有没有办法检查元素是否在前台?

当我在弹出窗口中输入值并单击“保存并继续”时, 我检查了“取消”按钮(在上图中突出显示)是否已启用,并尝试再次检查它是否显示。

driver.findElement(By.xpath("//input[contains(@id,'Cancel')]")).isEnabled(); 
driver.findElement(By.xpath("//input[contains(@id,'Cancel')]")).isDisplayed();

系统需要一些加载时间才能使此弹出窗口消失并重新获得主窗口的焦点。

但即使在弹出窗口消失之前,我检查 (WebDriver wait) 以查看“取消”按钮是否已启用/显示,都返回 true 并继续执行进一步的执行。

如果我输入Thread.sleep 2 秒,它绝对可以正常工作。但我不想无条件地停止执行。所以现在我需要找出是否有任何方法可以检查一个元素是否真的在前景中并且是焦点。

有人可以帮忙吗?

【问题讨论】:

    标签: java selenium selenium-webdriver wait


    【解决方案1】:

    您需要添加等待弹出窗口消失的时间。代码应如下所示:

    wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("XPath of popup")));
    

    希望对你有帮助!

    【讨论】:

    • 这绝对是解决我问题的好方法。但是有没有办法检查元素是在前景还是背景中,是否在焦点上?
    • @SK,它与您的 HTML 有关。如果有框架或单独的窗口,则需要切换到它们,然后,您可以对框架/窗口内的元素执行操作。如果您在当前窗口中 - 只是定期解释元素(正如我在上面的回答中所做的那样)。
    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 2014-11-14
    • 1970-01-01
    • 2012-03-22
    • 2016-11-14
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多