java
  • if-statement
  • selenium-webdriver
  • 2017-06-16 59 views 0 likes 
    0

    我正在写一个自动化测试一个网页,其中用户基于其存在硒网络驱动程序的if-else条件两个按钮

    我使用硒的webdriver有一个按钮点击之间进行选择爪哇 方案 1.只有一个按钮可以存在于时间(button1button2) 2.如果button1存在时,在该 3.如果button2用户点击存在时,在该

    代码用户的点击次数:

    if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).isDisplayed()) { 
         //clicking on button1 if its presemt 
    
         WebElement clickBtn1 = driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")); 
         clickBtn1.click(); 
    
    } 
        else if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).isDisplayed()){ 
        //Clicking on button2 if its present 
    
        WebElement clickBtn2 = driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")); 
        clickBtn2.click(); 
    } 
    
    else 
        { 
         System.out.println("No such button found"); 
        } 
    

    上面的代码片段不起作用。有人可以帮助纠正它。

    注:如果我删除的if-else条件和运行分别为每个按钮的功能它的工作原理

    感谢,

    +0

    什么不起作用?它是否说“没有找到这样的按钮”? – nCessity

    +0

    是的。它会抛出错误“org.openqa.selenium.NoSuchElementException:no such element:”如果我为两个按钮单独运行代码而没有其他条件,它会起作用 – Harshini

    +0

    这些xpath表达式非常长。你能证实他们工作吗?你可以通过添加一个id到按钮来简化它们吗? – nCessity

    回答

    0

    谢谢大家谁帮助。如果任何人将来需要这个代码,我在这里发布工作代码。

    场景: - 网页上有两个按钮 - button1和button2。 - button1将首先出现 - 如果用户最初单击button1,第二次button2将会出现。 (在这种情况下,Button1的是从UI隐藏)

    代码块:

    if(!driver.findElements(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).isEmpty()){ 
    
    //Clicking on button2, which appears when button1 is not present 
           WebDriverWait wait = new WebDriverWait(driver, 30); 
           wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div"))); 
    
           Thread.sleep(5000); 
           driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[3]/div[2]/div")).click(); 
    
         } 
    
         else if(driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).isEnabled()){ 
    
    //clicking on button1 
           WebDriverWait wait = new WebDriverWait(driver, 30); 
           wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div"))); 
    
         driver.findElement(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div")).click(); 
    
    
        } 
        else 
         { 
          System.out.println("No such button found"); 
         } 
         Thread.sleep(5000); 
    
    0

    您的if-else逻辑之前尝试使用明确的等待。

    WebDriverWait wait = new WebDriverWait(driver, 30); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='product_container_1']/div[2]/div[2]/div[3]/div[2]/div/a/div"))); 
    

    让我知道这是否有帮助。

    +0

    对不起,这也没有工作。它抛出相同的错误元素未找到 – Harshini

    +0

    但这段代码工作 - if(!driver.findElements(By.xpath(“xpath”))。isEmpty()) – Harshini

    相关问题