Java 如何在selenium webdriver中使用if/else条件?

Java 如何在selenium webdriver中使用if/else条件?,java,selenium-webdriver,Java,Selenium Webdriver,在SeleniumWebDriver中,我想在java中使用if/else条件。每个步骤都需要检查,并需要逐个执行。比如说 Log.info("Clicking on Reports link"); WebElement menuHoverLink = driver.findElement(By.id("reports")); actions.moveToElement(menuHoverLink).perform(); Thread.sleep(6000); 在这段代码中,我需要检查id,一

在SeleniumWebDriver中,我想在java中使用if/else条件。每个步骤都需要检查,并需要逐个执行。比如说

Log.info("Clicking on Reports link");
WebElement menuHoverLink = driver.findElement(By.id("reports"));
actions.moveToElement(menuHoverLink).perform();
Thread.sleep(6000);

在这段代码中,我需要检查id,一旦它出现,它需要执行操作,否则它需要跳过测试用例,否则不会失败。

在脚本中使用try-catch块,如

Log.info("Clicking on Reports link");
try {
WebElement menuHoverLink = driver.findElement(By.id("reports"));
actions.moveToElement(menuHoverLink).perform();
Thread.sleep(6000);
} Catch(Exception e) {
// Element not found....do not fail my test
}
选项#1:

WebElement menuHoverLink = null;
try
{
    menuHoverLink = driver.findElement(By.id("reports"));
}
catch(Exception e)
{
}
if (menuHoverLink != null)
{
    actions.moveToElement(menuHoverLink).perform();
    Thread.sleep(6000);
}
List<WebElement> menuHoverLinks = driver.findElements(By.id("reports"));
if (menuHoverLinks.size() > 0)
{
    actions.moveToElement(menuHoverLinks.get(0)).perform();
    Thread.sleep(6000);
}
选项2:

WebElement menuHoverLink = null;
try
{
    menuHoverLink = driver.findElement(By.id("reports"));
}
catch(Exception e)
{
}
if (menuHoverLink != null)
{
    actions.moveToElement(menuHoverLink).perform();
    Thread.sleep(6000);
}
List<WebElement> menuHoverLinks = driver.findElements(By.id("reports"));
if (menuHoverLinks.size() > 0)
{
    actions.moveToElement(menuHoverLinks.get(0)).perform();
    Thread.sleep(6000);
}
List menuOverlinks=driver.findElements(By.id(“报告”);
如果(menuOverlinks.size()>0)
{
actions.moveToElement(menuOverlinks.get(0)).perform();
睡眠(6000);
}
请记住,
Thread.sleep
本身也可能引发异常,因此您应该在方法内部捕获它,或者在方法声明的末尾添加
throws exception

if(driver.findElement(By.id("reports").size()!=0){

   WebElement menuHoverLink = driver.findElement(By.id("reports"));
   actions.moveToElement(menuHoverLink).perform();

   }
   else{
   system.out.println("element not present -- so it entered the else loop");

}

使用这个方法——如果元素不存在,testcase也不会失败

Am using TestNg framework将无法正常工作,如果
action
方法之一抛出异常(我不确定它们是否抛出异常),或者
Thread.sleep
抛出异常(我肯定可能)。OP应该只在
try/catch
块中放置
driver.findElement
方法调用。我已经尝试了上述所有方法,但当我更改ID并检查它是否引发异常或它显示的部分元素当前不可见时,问题可能就不存在了与命令持续时间或超时进行交互:32毫秒,测试用例失败这里是HTML标记10.4.16.159/reports/“>reports有一件事我想在您的选项中更改#1.在捕获所有异常的过程中,为什么不只捕获ElementNotFound异常?想法?
Try this one . i think this should work 
for me it worked 

private boolean existsElement(String id) {
        try {
            driver.findElement(By.id(id));
        } catch (Exception e) {
            System.out.println("id is not present ");
            return false;
        }

        return true;
    }


if(existsElement("reports")==true){

   WebElement menuHoverLink = driver.findElement(By.id("reports"));
   actions.moveToElement(menuHoverLink).perform();

   }
   else{
   system.out.println("element not present -- so it entered the else loop");

}