我想使用.isDisplayed()方法使用条件函数。只要此方法返回true,一切都正常。
我认为不需要HTML,因为我只有一个按钮可以在页面上看到,这是相关的(我已成功点击了带有以下xpath
的按钮。
现在我尝试:
if (driver.findElement(By.xpath("//a[@id='button1']")).isDisplayed()) {
//do stuff
}
else {
//do other stuff
}
甚至
WebElement withdrawnBtn = driver.findElement(By.xpath("//a[@id='button1']"));
boolean isVisible = withdrawnBtn.isDisplayed();
if (isVisible) {
//do stuff
}
else {
//do other stuff
}
但是两个条件都失败了,如果在第一次运行中应该执行来自else
的代码,因为每当按钮不可用时,就会有失败指向driver.findElement(By.xpath("//a[@id='button1']")).isDisplayed());
的行 - 失败,因为没有显示按钮。当没有显示按钮而不是代码失败时我需要做某事......
答案 0 :(得分:1)
在检查isDisplayed条件之前,我们需要检查页面上是否存在元素否则会抛出Nosuchelementfound异常
driver.findElements(“Locator”)。size() - 如果页面上存在元素,则返回整数值。
以下是修正代码。
int size = driver.findElements("Locator").size();
if(size!=0){
if(driver.findElement("Locator").isDisplayed()){
// do operations
}
}
阅读评论后,我知道isEmpty是更好的使用方式而不是大小我对上面的代码进行了更改。
WebDriver driver;
List<WebElement> webElements = driver.findElements(By.xpath("test"));
if(!webElements.isEmpty()){
if(driver.findElement(By.xpath("test")).isDisplayed()){
// do operations
}
}
尝试一下,让我知道它是否适合你
答案 1 :(得分:1)
您还可以使用以下内容来识别元素是否存在:
private boolean isPresent(WebElement element) {
try {
element;
} catch (NoSuchElementException e) {
return false;
}
return true;
}
答案 2 :(得分:0)
好的,我正在考虑捕获NoElementFound异常,但我发现了这个问题: Selenium Webdriver: best practice to handle a NoSuchElementException
使用我上面使用的链接:
List<WebElement> withdrawnBtn = driver.findElements(By.xpath("//a[@id='button1']"));
if (withdrawnBtn.size() != 0) {
//do stuff
}
else {
//do other stuff
}
答案 3 :(得分:0)
您可以使用isEmpty()方法代替size()方法。