2016-11-11 5 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: Exception in thread "main" org.openqa.selenium.NoSuchElementException: Element kann nicht lokalisieren: { "Methode": "XPath", "Selektor":“ .//*[@id='d9c1cb30-3459-4246-919d-41c5fe23de2f']/div/div/article/div/ul[1]/li[3]/a "}wenn Bedingung Fehler in Selen immer WebDriver

+0

Freunde verwenden, wenn die Bedingung in Ordnung arbeiten, aber sonst Fehler zu werfen, die in XPath, wenn die Bedingung – Dana

+0

id scheinen dynamisch zu suchen nicht in der Lage ist. Verwenden Sie niemals eine solche dynamische ID, um ein Element zu identifizieren. Der Fehler besagt, dass der verwendete Locator (xpath) das Element nicht finden kann. Versuchen Sie es mit anderen Locators. teilen Sie den HTML-Teil, der dem Element entspricht, das Sie identifizieren möchten –

+0

Hallo Naveen, ich versuche alle möglichen Locators, seine Anzeige gleichen Fehler. Aber jetzt ist es nur gelöst, wenn/sonst wrap in try catch block platziert. – Dana

Antwort

1

Wickeln Sie den if/else Teil ein drinnen versuche catch block. Weil Selen eine Ausnahme bildet, wenn auf der Seite kein Element mit gegebenem Locator verfügbar ist.

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

sonst kann man auch isPresent() statt isDisplayed()

+0

@ Sudharsan Selvaraj Danke, es funktioniert – Dana