首页 > 解决方案 > 如何处理硒中的if(element.display)

问题描述

我想检查是否显示元素 - 如果为真,则执行一些代码。如果不是,则执行其他一些代码。

当我试图这样做时,如果条件为假并且元素不存在,那么测试会粉碎。它不会继续到 else 或 else if。

我想知道如何处理。

在下一个代码中,我想检查箭头侧是向上还是向下,如果它向上做其他事情,做一些不同的事情。

if (ca.arrowuppicknewaddress().isDisplayed())
    {
    
//  ca.arrowpicknewaddress().click();
//  Thread.sleep(2000);     
    driver.findElement(By.xpath("/html[1]/body[1]/div[5]/div[1]/div[2]/div[1]/section[1]/div[2]/div[1]/div[1]/section[1]/div[1]/ul[1]/li[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/span[1]")).click();
    Thread.sleep(1000);
//  ca.arrowpicknewaddress().click();
//  Thread.sleep(1000);
//  driver.findElement(By.xpath("/html[1]/body[1]/div[5]/div[1]/div[2]/div[1]/section[1]/div[2]/div[1]/div[1]/section[1]/div[1]/ul[1]/li[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/span[1]")).click();
//  Thread.sleep(3000);
    driver.findElement(By.xpath("//*[@id=\"deliveryScheduleModalData\"]/div[1]/button")).click();
    Thread.sleep(2000);
    ca.addOTC().click();
    Thread.sleep(2000);
    ca.PaymentToExendedCart().click();
    Thread.sleep(2000);
    ExtendedCart ec = new ExtendedCart(driver);
    ec.ToCheckOut().click();    
    }
     
    
        ca.arrowpicknewaddress().click();
        Thread.sleep(2000);     
        driver.findElement(By.xpath("/html[1]/body[1]/div[5]/div[1]/div[2]/div[1]/section[1]/div[2]/div[1]/div[1]/section[1]/div[1]/ul[1]/li[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/span[1]")).click();
        Thread.sleep(1000);

有人可以帮我正确完成吗?

提前致谢

标签: javaseleniumif-statement

解决方案


两种方式:

1. 列表

list您可以在using ( )中获取该元素,findElements然后 ifsize is > 0然后执行您想要的代码,或者 else ifit is 0然后执行 else 部分。

代码 :

if (driver.findElements(By.xpath("Some xpath here")).size() > 0) {
   // execute if block here
}
else {
  // execute else block here
}

益处 :

You will not have any exception. 

缺点:

Waiting time,假设如果元素不存在,那么findElements将等待(ImplicitWait)找到它,所以有点耗时。

2. 做 try-catch 代替:

try {
if(someWebElement.isDisplayed()){

}
catch(){
write the code if element is not found
}

}

推荐阅读