2016-11-14 2 views
0

Ich habe versucht, ein Szenario zu automatisieren, wo die Bedingung ist, dass ich alle Dropdown-Optionen auswählen muss und ich muss diese Optionen einzeln anklicken. Ich habe versucht mit dem Code, aber es klickt nur die erste Option, und zeigt einen Fehler als veraltet Element ist nicht anklickbar. Bitte helfen.Veraltetes Element Exception in selen webdriver

+0

Sie sollten die Seite stellen Sie sicher geladen und alle die Anforderung fertig ist und nach, dass Sie für Ihr Element suchen. – lauda

+0

verwenden Sie POM? Wenn ja, kann ich etwas vorschlagen. –

+0

Ja, bitte sagen Sie mir – Test

Antwort

0

StaleElementException tritt auf, wenn ich ein Element finde, das DOM aktualisiert wird, dann versuche ich, mit dem Element zu interagieren.

Also, wie gehe ich damit um? Verwenden Sie die folgende Klick-Methode versucht Element mehrmals klicken:

public boolean retryingFindClick(By by) { 
     boolean result = false; 
     int attempts = 0; 
     while(attempts < 2) { 
      try { 
       driver.findElement(by).click(); 
       result = true; 
       break; 
      } catch(StaleElementException e) { 
      } 
      attempts++; 
     } 
     return result; 
} 

diese ausgezeichnete Lösung von here genommen.

0

Wenn Sie eine Option aus dem Dropdown-Menü auswählen, wird Ihr DOM ebenfalls aktualisiert. Also müssen Sie auch Ihr Objekt aktualisieren. Siehe Beispiel-Code-Snippet:

Select select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); // you may use any locator of your choice 
    List<WebElement> options = select.getOptions(); 

    for(WebElement option : options){ 
      select.selectByVisibleText(option.getText()); 

      //re-assign your select object since your page has been reloaded after selecting an option 
      select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); 
    } 
+0

Versucht dies, aber zeigt das gleiche – Test