0

页面中不存在元素的最佳方式是什么?例如 TEST - 当有数据时会出现此链接,否则此链接将不存在。

由于我遇到了 Global timeout 问题,如何快速识别?全局等待元素让我在页面上停留很长时间

有什么方法可以快速识别吗?

4

3 回答 3

0

假设您不知道是否会有数据,我仍然会使用等待,即使它是一秒钟或两秒钟,并且只是捕获异常而不像之前建议的那样

try {
    WebDriverWait wait = new WebDriverWait(driver, 5);
    wait.Until(ExpectedConditions.ElementIsVisible(By.Id("elementId")));

    element = driver.findElement(By.Id("elementId");
} catch (NoSuchElementException | TimeoutException) {}

当然,如果当您点击页面时,您已经知道链接是否应该存在并且无需等待任何内容加载,那么可以,如之前建议的那样捕获异常并且不做任何事情。

于 2017-08-25T15:05:20.760 回答
0

尝试使用 findElement 定位元素。如果该元素不存在,您将收到异常。基于此,您可以决定下一步要做什么。

try {
        WebElement element = driver.findElement(By.id(<element selector string>)
    }
catch(NoSuchElementException nse)
 {}
于 2017-08-25T14:41:00.117 回答
0

您可以使用以下函数,它将所有元素存储在列表中,如果大小大于真实元素存在:

public boolean isElementPresent(By Locator){

List<WebElement> allItems  = driver.findElements(locator);

if (allItems.size() >0){

return true;
}else{

return false

}

}
于 2017-08-26T07:23:52.327 回答