t将“ID”在UiBinder的本身GWT小部件。
对于如。
还增加 在* .gwt.xml
然后我尝试这种在Selenium测试案例
WebElement element = driver.findElement(By.id("gwt-debug-loginButton"));
有时它工作正常。 但有些时候,它抛出以下异常,
无法定位元件:{ “方法”: “ID”, “选择器”: “GWT-调试loginButton”}命令的持续时间或超时:62毫秒
我需要更新吗? 谁能帮我?
使用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
}
当你试图找到使用你的网页的任何元素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 在这里 (有很多有趣的变化,你可以用这个类中使用)
( 请注意 ,驱动程序将等待的时间,只有当它无法找到你的代码寻找的元素,如果驾驶员发现一个元素,则其简单地继续执行,在规定的时间)