Webdriver中selenium.isElementPresent的替代方法是什么?

Aru*_*run 5 xpath webdriver selenium-webdriver

嗨,我需要检查下拉字段是否有给定的值,但这些值未被选中,因此它不会显示在下拉框中.我有关于元素的Xpath

//table[contains(@id,'Field')]//tr[td//span[text()='Code']]/preceding-sibling::*[1]/td//select[contains(@id,'GSRCH_FLT')]/option[text()='not=']
Run Code Online (Sandbox Code Playgroud)

这是在浏览器中正确识别元​​素.但是,当我使用以下webdriver方法来验证它

driver.findElement(By.xpath("//table[contains(@id,'Field')]//tr[td//span[text()='Code']]/preceding-sibling::*[1]/td//select[contains(@id,'GSRCH_FLT')]/option[text()='not=']")).isDisplayed();
Run Code Online (Sandbox Code Playgroud)

它返回false,因为它没有显示在框中.

你能告诉我替代方案吗?

Ros*_*son 8

你要:

private boolean isElementPresent(WebDriver driver, By by){
    return driver.findElements(by).count != 0;
}
Run Code Online (Sandbox Code Playgroud)

findElements()对此更好,findElement()因为它不会等待元素不存在.如果您在启用隐式等待的情况下运行,findElement()将会超时寻找元素(这是您正在捕获的异常),并且需要一段时间.