2016-11-11 24 views
0
//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(); 

      } 
    } 

ERROR:异常在线程 “主” org.openqa.selenium.NoSuchElementException:无法定位元件:{ “方法”: “的xpath”, “选择器”:” .//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a“}如果条件得到错误的硒的webdriver

+0

朋友,如果条件工作正常,但其他情况则抛出了XPath中,如果条件无法找到 – Dana

+0

ID似乎动态误差。从不使用这种动态ID来标识元素。该错误表示使用的定位器(xpath)无法找到该元素。所以尝试其他定位器。共享与你想识别的元素相对应的HTML部分 –

+0

嗨Naveen,我尝试了所有可能的定位器,它显示相同的错误。但现在它解决了只是/否换行置于try catch块内。 – Dana

回答

1

包装if/else部分里面试试catch块。因为如果在页面中没有给定定位符的元素,硒将通过例外。

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()

+0

@ Sudharsan Selvaraj谢谢你,它的工作 – Dana