【问题标题】:if condition getting error in selenium webdriver如果条件在 selenium webdriver 中出现错误
【发布时间】:2016-11-11 18:13:40
【问题描述】:
    //extract the link texts of each link element

    for (WebElement Page3 : linkElements3) 
    {
        linkTitles3[k] = Page3.getText();
        k++;
    }

    //test each link
    for (String t : linkTitles3) 
    {
            // Titles Click 
            driver.findElement(By.linkText(t)).click();
            System.out.println("\n"+ driver.getTitle());

            driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

            if(driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a")).isDisplayed())
            {
                driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a")).click();     
                driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
                Thread.sleep(4000);  

                System.out.println(driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/dl/dd[3]/a")).getText());
                System.out.println(driver.getCurrentUrl());
                driver.navigate().back();
                driver.navigate().back();
            }
            else
            {
                System.out.println("No Teaching Notes Present");
                driver.navigate().back();

            }
    }

错误:线程 "main" org.openqa.selenium.NoSuchElementException 中的异常:无法定位元素:{"method":"xpath","selector":".//*[ @id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a"}

【问题讨论】:

  • 朋友们,如果条件工作正常,但如果条件无法定位,则会抛出 xpath 错误
  • id 似乎是动态的。永远不要使用这样的动态 ID 来识别元素。该错误表示使用的定位器(xpath)无法找到该元素。所以尝试其他定位器。分享与您要识别的元素相对应的 HTML 部分
  • 嗨 Naveen,我尝试了所有可能的定位器,它显示相同的错误。但是现在它只是在 try catch 块中解决了 if/else 包装。

标签: java selenium if-statement selenium-webdriver


【解决方案1】:

if/else 部分包裹在try catch 块中。因为如果页面中没有具有给定定位器的元素,selenium 将通过异常。

try{
if(driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a")).isDisplayed())
        {
            driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a")).click();     
            driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
            Thread.sleep(4000);  

            System.out.println(driver.findElement(By.xpath(".//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/dl/dd[3]/a")).getText());
            System.out.println(driver.getCurrentUrl());
            driver.navigate().back();
            driver.navigate().back();
        }
        else
        {
            System.out.println("No Teaching Notes Present");
            driver.navigate().back();

        }
}catch(Exception e){
  System.out.println("No Teaching Notes Present");
            driver.navigate().back();
 }

否则你也可以用isPresent()代替isDisplayed()

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多