微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在查找 UI 上不存在的 webelement 时绕过隐式等待条件?

如何解决如何在查找 UI 上不存在的 webelement 时绕过隐式等待条件?

我正在自动一个场景,其中特定的 Web 元素可能会或可能不会显示在 UI 上。如果它正在显示,那么我想对其执行特定操作。我正在使用以下逻辑

AutoResetEvent

只要元素在 UI 上可见,代码就可以正常工作。但是在不显示元素的情况下,“element.isdisplayed()”会等待元素 10 秒(即我为驱动程序会话定义的隐式等待时间)。

我希望我的脚本不要等待元素出现的那 10 秒,而是继续执行进一步的操作。知道我应该在这里采用什么方法吗?

解决方法

似乎您可以通过使用 WebDriverWait 减少超时值来实现。

尝试创建一个布尔函数来在特定时间检查元素是否存在。

public boolean checkElement(By locator,int seconds) {
    boolean find = false;
    try {
        new WebDriverWait(driver,seconds).until(ExpectedConditions.presenceOfElementLocated(locator));
        find = true;
    } catch (Exception e) {
        // TODO: handle exception
    }
    return find;
}

只需拨打:

By locator = By.name("yourLocator");

if(checkElement(locator,1)) {
    //perform here
    ....
}

以下导入:

import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

请删除您之前声明的 implicitWait

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。