如何使用if else条件在Selenium中使用WebDriver搜索元素?

时间:2014-01-15 08:37:33

标签: java selenium xpath selenium-webdriver

  1. 我使用了if if concept
  2. 我没有使用try catch finally概念webdriver元素发现使用elseif循环
  3. 我希望它如何运作:

    1. 首先,它将检查{if}条件是否为[if(driver.findElement(By.xpath("username")).isDisplayed())],如果未找到,则不会打印任何语句。
    2. 因为没有看到“if”条件,它将转到{else}条件[else if(driver.findElement(By.id("username")).isDisplayed())]和“else if if”语句为真,它将打印并执行循环中的任何内容.. <登记/> 让我知道上面的状态,我的下面代码是否有效......
    3. public void mytrip()throws Exception{   
          driver.get("http://yahoomail.com/");   
          if(driver.findElement(By.xpath("username")).isDisplayed()){     
              driver.findElement(By.xpath("username")).click();   
              System.out.println("clicked"); 
          } else if(driver.findElement(By.id("username")).isDisplayed()){ 
              driver.findElement(By.id("username")).click(); 
              System.out.println("clicked in else if");   
          }    
      }  
      

      问题:它正在检查是否有条件,并且在该条件下没有找到元素,它将从循环中退出而不会出现在其他地方...

      根据以下概念我的上述代码应该有效...如果没有那么请让我知道如何使用...

       class IfElseDemo {
           public static void main(String[] args) {
               int testscore = 76;
               char grade;
               if (testscore > 90) {
                   grade = 'A';
               } else if (testscore < 80) {
                   grade = 'B';
               } else if (testscore > 60) {
                   grade = 'C';
               }
               System.out.println("Grade = " + grade);
           }
       }
      

      该程序的输出为:Grade = B

3 个答案:

答案 0 :(得分:0)

当然它已经脱离了循环。 driver.findElement 如果找不到该元素,则抛出NoSuchElementException。您的xpath不好,因此找不到导致异常的元素。

  

Boolean isPresent = driver.findElements(By.yourLocator).size()&lt; 0

尝试类似的东西来检查元素。

答案 1 :(得分:0)

你可以试试这个。 如果显示元素,则单击元素,否则脚本继续。

List<WebElement> dynamicElement = driver.findElements(By.id("element"));

if (dynamicElement.size() != 0) {
    System.out.println("Element present");
    driver.findElement(By.id("element")).click();
} else {
    System.out.println("Element not present");
}

答案 2 :(得分:0)

示例:在我的脚本中看起来像 step1,step2,step3,complete。 一段时间后,此步骤发生了变化 step1,step2,step3,step4,complete。这些步骤已相同的“XPATH”。所以我不知道如何给出“LOOP”条件。我附上了我的代码..plz 给出好的建议

       for(int i=0; i<=10; i++) {
        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS) ;
            JavascriptExecutor js1=(JavascriptExecutor)driver;
            js1.executeScript("window.scrollTo(0,document.body.scrollHeight)");
            
           WebElement clickYESButton2 = driver. findElement(By.xpath("/html/body/div[1]/main/ui-view/ui-view/section/div[2]/div[2]/div/form/div/div[2]/div[1]/div/div/label[1]/span"));
           clickYESButton2.click();
           driver.manage().timeouts().implicitlyWait(100,TimeUnit.SECONDS) ;
           System.out.println(driver.findElement(By.xpath("//*[@id=\"main-container\"]/ui-view/ui-view/section/div[2]/div[2]/div/form/div/div[1]/h5/span")).getText());
           WebElement clickNEXTButton2 = driver. findElement(By.xpath("//div[@class='card']//button[contains(text(),'Next Step')][1]"));
           clickNEXTButton2.click();
          Thread.sleep(5000);
           if(driver.findElement(By.xpath("//*[contains(text(),'Complete Review')]")).isDisplayed()){     
               driver.findElement(By.xpath("//*[contains(text(),'Complete Review')]")).click();  
             }
           else {
                   reviewPgApplicationPage.clickYESButton.click();
                 
                
                                        }