我怎样才能克服硒元素ID例外?(How can I overcome Element id exce

2019-07-30 20:59发布

t将“ID”在UiBinder的本身GWT小部件。

对于如。

还增加 在* .gwt.xml

然后我尝试这种在Selenium测试案例

WebElement element = driver.findElement(By.id("gwt-debug-loginButton"));

有时它工作正常。 但有些时候,它抛出以下异常,

无法定位元件:{ “方法”: “ID”, “选择器”: “GWT-调试loginButton”}命令的持续时间或超时:62毫秒

我需要更新吗? 谁能帮我?

Answer 1:

使用WebDriverWait,在一定的时间段后搜索元素。 事情是这样的。

try {
        (new WebDriverWait(driver, seconds, delay)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                try {
                    WebElement el = d.findElement(By.id("gwt-debug-loginButton"));
                    return true;
                } catch (Exception e) {
                    return false;
                }
            }
        });
    } catch (TimeoutException t) {
        //Element not found during the period of time
    }


Answer 2:

当你试图找到使用你的网页的任何元素selenium WebDriver 。 你可以让driver通过使用等到页面加载完全要么隐等待或显式等待

隐等待的示例(此代码通常用于初始化驱动程序后) -

WebDriver driver = new FirefoxDriver();   
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

上面的语句使司机等待10秒钟,如果司机无法找到你正在寻找的元素。 如果驱动程序无法找到它甚至10秒后司机抛出异常。

明确等待的例子-这是专门用于单个WebElement ,在您的情况-

new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfElementLocated(By.id("gwt-debug-loginButton")));

上面的代码将会使驾驶员等待20秒,直到它找到的元素。 如果找不到元素甚至20秒后,它抛出一个TimeoutException。 您可以检查ExpectedCondition的API 在这里 (有很多有趣的变化,你可以用这个类中使用)

请注意 ,驱动程序将等待的时间,只有当它无法找到你的代码寻找的元素,如果驾驶员发现一个元素,则其简单地继续执行,在规定的时间)



文章来源: How can I overcome Element id exception in Selenium?