Her bölümün altında birden çok bağlantı bulunan listeye sahibim. Her bölümün aynı bağlantıları var, her bölümün altındaki belirli bir bağlantıyı tıklamam gerekiyor. Aşağıdaki kodu yazdım ama çalıştırdığında bana stale element reference: element is not attached to the page document
hatası veriyor. ana eleman başvurusu: öğe sayfa belgesine eklenmemiş
Bu
benim kodudur:<div id="ucAdminMenu_divMenu">
<ul id="sliding-navigation">
<li class="sliding-element">
<a href=" ">Claims Status</a>
</li>
<li class="sliding-element">
<a href=" ">Eligibility Status</a>
</li>
<li class="sliding-element">
<h3>Section-1</h3>
</li>
<li class="sliding-element">
<a href=" ">Forms and Documents</a>
</li>
<li class="sliding-element">
<a href=" HourBank.aspx?id=002">Hour Bank</a>
</li>
<li class="sliding-element">
<h3>Section-2</h3>
</li>
<li class="sliding-element">
<a href=" ">Benefit Status</a>
</li>
<li class="sliding-element">
<a href=" ">Forms and Documents</a>
</li>
<li class="sliding-element">
<h3>Section-3</h3>
</li>
<li class="sliding-element">
<a href=" ">Forms and Documents</a>
</li>
<li class="sliding-element">
<h3>Testing Fund</h3>
</li>
<li class="sliding-element">
<a href=" ">Benefit Status</a>
</li>
<li class="sliding-element">
<a href=" ">Order ID Card</a>
</li>
</ul>
</div>
aşağıda gibidir
public static void main(String[] args) throws InterruptedException
{
WebDriver driver = new ChromeDriver();
driver.navigate().to("url......");
driver.findElement(By.id("Login1_txtEmailID")).sendKeys("[email protected]");
driver.findElement(By.id("Login1_txtPassword")).sendKeys("Testing1*");
driver.findElement(By.id("Login1_btnLogin")).click();
List<WebElement> LeftNavLinks=driver.findElements(By.xpath("//*[@id='sliding-navigation']//a"));
Thread.sleep(1000);
String ben="Benefit Status";
String[] linkTexts = new String[LeftNavLinks.size()];
int i = 0;
for (WebElement e : LeftNavLinks)
{
linkTexts[i] = e.getText();
System.out.print(i+" " + linkTexts[i]+"\n");
if(linkTexts[i].equals(ben))
{
String BenefitStatLi="//*[@id='sliding-navigation']/li[%s]/a";
System.out.print(i+" " + linkTexts[i]+"\n");
driver.findElement(By.xpath(String.format(BenefitStatLi,i))).click();
driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click();
}
i++;
}
}
}
Bu, HTML yapıdır Hata İz geçerli: istisna veren çizgi nedir
Exception in thread "main"
org.openqa.selenium.StaleElementReferenceException: stale element
reference: element is not attached to the page document
linkTexts [i] = e.getText(); satırlar ikinci kez döngü yaparken hata veriyor –
Çözüldü, sayfa yenileme 1 nedeniyle hata oldu. İlk önce tüm bağlantı metinlerini bir String dizi değişkenine kopyaladım ve daha sonra her bölümün altında gerekli bağlantıları tıklatmak için döngü için kullanıldı. (WebElement e: LeftNavLinks) için \t \t \t \t linkTexts [i] = e.GetText(); \t \t i ++; için } (int j = 0; j
Yani aynı nedenden ötürü. Elemanlar önceki nedeniyle sayfa yenileme için DOM çıkarıldı belirlenen :) –