0

画像に示されているとおり:クリックするたびに各リンクをクリックします。古い要素の例外:ページ内のレポートリンクをクリックして戻るボタンなど

レポートリンクをクリックすると、次のページに移動します。ここで、バックリンクをクリックすると、同じページに戻ります。

それは同じページに戻って取ると、ロケータは、もはや次のレポートリンク&がStaleElementReferenceException

image 3 image 2

Image 1

public void getreports(String reportname) throws Exception 
List<WebElement> li=driver.findElements(By.xpath(".//tbody/tr/th/following:: 
tr/td//div/a")); 

for(WebElement e: li) { 

if(reportname.equalsIgnoreCase(e.getText())) { 
utilities.wait_control(e); 
e.click(); 
break; 
} 
else if(reportname.equalsIgnoreCase("all")) 
{ 

utilities.wait_control(e); 
e.click(); 

NetReports ld = PageFactory.initElements(driver, NetReports .class); 
ld.Netsubcategoryreport_backbutton.click(); 
Thread.sleep(2000); 
} } 
+0

変更または子ページが開いているフレームがあるかもしれません。 –

答えて

1

私はあなたがちょうどあなたのループに少し調整が必要だと思う:

String selector = ".//tbody/tr/th/following::tr/td//div/a"; 
List<WebElement> li=driver.findElements(By.xpath(selector)); 
for (int i = 0; i < li.length; i++) { 
    li=driver.findElements(By.xpath(selector)); 
    WebElement e = li.get(i); 
    //Rest of your logic goes here 
} 
0
  • 古い要素例外をスロー識別しません -

    名前が示すように、この例外は、要素staleが発生した場合に発生します。これは、アクションを実行しようとしている要素参照がページで使用できなくなったか、または変更されたことを意味します。

    この例外を回避するには、 のコードを の何点かに取得してから、別の場所で再利用するのではなく、その要素を見つけようとします。

関連する問題