当您执行类似
的操作时WebElement tab = driver.findElement(By.xpath("//table"))
你可以发出像
这样的命令 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
更改超时。但是现在,如果您想要执行以下操作,该怎么办:
public String getCellText(WebElement tab) {
{
WebElement td = tab.findElement(By.xpath(".//td"));
return td.getText();
}
你不能做
tab.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
有没有办法改变超时?当你有一个表是一个元素,并且想要找到下面的行时,如果可能没有行,这就特别有趣。如果您执行了tab.findElements(By.xpath(" tr"))并且没有行,则可能需要一分钟才能返回。
有没有办法像上面那样为元素设置超时?
答案 0 :(得分:4)
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
这是隐含等待。
为WebDriver对象实例的生命周期设置隐式等待。
由于标签是网络元素,因此您无法执行以下操作:
tab.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
您可以选择显式等待来更改特定条件的超时。
代码将是这样的:
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(locator));
它返回一个web元素。你也可以这样:
WebElement element = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(locator));