Problem-Anweisung: Ich bekomme veraltete Element-Ausnahme, wenn for-Schleife das zweite Mal ausgeführt wird.Stale Element Referenz Ausnahme: Wie zu lösen?
Beschreibung:
I for-Schleife bin mit Tabellenelemente zu handhaben. In der ersten Iteration wird nach dem erforderlichen Element auf der Seite gesucht. Wenn das Element auf dieser Seite nicht verfügbar ist, wird es auf der zweiten Seite gesucht. Webdriver findet das Element erfolgreich, wenn es auf der ersten Seite verfügbar ist, aber wenn es auf der ersten Seite nicht verfügbar ist, sucht es nach dem Element auf der zweiten Seite. Aber hier für die Schleife schlägt mit der Ausnahme namens 'Stale Element Exception'.
Fehlermeldung:
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: abgestanden Element Referenz: Element nicht auf die Seite Dokument angebracht ist
Code:
List <WebElement> allAmountValues = driver.findElements(By.xpath("(//table[@width=760][@cellspacing=1])[2]/tbody/tr/td[8]/div"));
for(int i =0;i<allAmountValues.size();i++){
System.out.println("Value are : "+allAmountValues.get(i).getText().replaceAll("\\s+", " "));
}
String testValue = "100000";
System.out.println("No.of Rows in the Table : "+allAmountValues.size());
for (int i1 =1; i1<allAmountValues.size();i1++) {
String amount = allAmountValues.get(i1+1).getText().replaceAll("\\s+","");
//System.out.println("amount Values : "+amount);
System.out.println("Value are : " + allAmountValues.get(i1).getText() + "== Corresponding link is : " + clicklinks.get(i1).getText());
if (amount.equalsIgnoreCase(testValue)) {
System.out.println("Found:" +testValue);
clicklinks.get(i1).click();
waitDriver();
driver.navigate().back();
break;
}
else
{
WebElement clickNext = driver.findElement(By.xpath("//a[contains(text(), 'Next')]"));
clickNext.click();
}
}
for(int rw=2;rw<allAmountValues.size();rw++)
{
WebElement a1 = driver.findElement(By.xpath("(//table[@width=760][@cellspacing=1])[2]/tbody/tr["+rw+"]/td[8]/div/span"));
String amm = a1.getText().replaceAll("\\s+", "");
System.out.println("Current value is:" +amm);
if(amm.equalsIgnoreCase("100000"))
{
WebElement a2 = driver.findElement(By.xpath("/html/body/form/div/table/tbody/tr/td/table/tbody/tr[5]/td/table/tbody/tr["+rw+"]/td[1]/div/input[6]"));
a2.click();
break;
}
}
WebElement authoriseButton = driver.findElement(By.xpath("//input[@name='btnAuthorise']"));
if(authoriseButton.isEnabled())
{
authoriseButton.click();
}
else
{
System.out.println("Authorise Button is not enabled");
}
}
Ich bin mit veralteten Element Fehler Ausnahme auf:konfrontiertString amount = allAmountValues.get(i1+1).getText().replaceAll("\\s+","");
diese Linie. Jede Hilfe wäre willkommen.
Ich habe den Code noch einmal bearbeitet. Bitte prüfe. @Kushal, wie identifiziere ich den Wert für allAmountValues? – Akki
Sie müssen dies erneut ausführen 'Liste allAmountValues = driver.findElements (By.xpath (" (// Tabelle [@ Breite = 760] [@ Zellenabstand = 1]) [2]/tbody/tr/td [8]/div "));' –
kushal
Ich fürchte, ich verstehe nicht. Weil es in der Schleife ist. Könnten Sie mir bitte zeigen, wie es geht? – Akki