問題聲明:當for循環第二次執行時,我得到了陳舊元素異常。陳舊元素引用異常:如何解決?
說明:
我使用for循環來處理表格元素。在第一次迭代中,它將搜索頁面上所需的元素。如果該元素在該頁面上不可用,那麼它將繼續並在第二頁上進行搜索。 Webdriver成功找到元素,如果元素在第一頁上可用,但是如果它在第一頁上不可用,那麼它會在第二頁上查找元素。但是這裏的for循環會失敗,稱爲「陳舊元素異常」。
錯誤消息:在螺紋
異常 「主」 org.openqa.selenium.StaleElementReferenceException:陳舊元件參考:元件未連接到頁面文檔
代碼:
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");
}
}
我面臨陳舊元素錯誤例外: String amount = allAmountValues.get(i1+1).getText().replaceAll("\\s+","");
這一行。 任何幫助,將不勝感激。
我再次編輯過代碼。請檢查。 @Kushal,我如何確定allAmountValues的值? – Akki
你必須再次運行這個'List allAmountValues = driver.findElements(By.xpath(「(// table [@ width = 760] [@ cellspacing = 1])[2]/tbody/tr/td [8]/div「));' –
kushal
我很害怕,我不明白。導致它在循環中。你能告訴我怎麼做嗎? – Akki