2016-05-12 3 views
0
try { 
    List<WebElement> list1 = driver.findElements(By.tagName("a")); 

    for (WebElement e : list1) { 
     if (e.getAttribute("href").equalsIgnoreCase("/ProductsRoute.do")) { 
      if (driver.findElement(By.id("buttonCheck++Check")).isDisplayed()) { 
       driver.findElement(By.id("buttonCheck++Check")).click(); 
       ProductConfPageexceptionHandler(driver); 
       break; 
      } 
     else if (driver.findElement(By.name("Next")).isDisplayed()) { 
       WebElement nextBut = driver.findElement(By.name("Next")); 
       nextBut.click(); 
       break; 
      } 
     break; 
     } 
} 
    } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Das Problem ist, dass, wenn das Skript e.getAttribute („href“) ausführt, ist es für /ProductsRoute.do aussieht. Wenn es es nicht findet, sollte es dort brechen. Aber das Problem ist, dass ich java.lang.NullPointerException bekomme.wenn sonst nicht in Selen WebDriver arbeiten, wenn equalsIgnoreCase

Die Erwartung ist, dass es versuchen sollte, die href /Products.do zu finden, wenn es nicht da ist, sollte es dort brechen. Wenn es in /Product.do ist, sollte es das nächste if ausführen. Brauchen Sie Hilfe bei der Suche nach dem Problem? Danke Leute!

+0

Verwenden Sie statt dessen "" /ProductsRoute.do".equalsIgnoreCase(e.getAttribute("href ")". –

+0

haben Sie U-Code debuggen und welche Zeile gibt es Fehler? – noor

+0

Scheint, dass es ein Problem mit der Klasse if gibt, die ich benutzt habe. Es sollte driver.findElement (By.) Sein. IsDisplayed(); { – Mathan

Antwort

1

Mögliche Lösungen:

  1. Listengröße zu überprüfen und sicherzustellen, dass Elemente

    assertThat (list1.size()> 0) .isTrue()

  2. vorhanden sind Geben Sie einige Wartezeit vor, wenn Bedingung

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