[英]Clicking Web Links in Selenium Webdriver
我的問題很簡單-使用硒,當每個超級鏈接在新頁面或新窗口中打開或在同一網頁中打開時,如何繼續單擊鏈接。
例如,我在網頁上有以下鏈接:登錄注冊忘記密碼? 通過此鏈接注冊我們主頁條款隱私政策
這是我為了單擊網頁上這些提到的鏈接而編寫的一小段代碼:
List<WebElement> elements = driver.findElements(By.tagName("a"));
//clicking all links
for (WebElement el : elements){
System.out.println("Link getting clicked" + el.getText());
el.click();
driver.navigate().back();
}
如您所見,我正在嘗試獲取鏈接,並試圖一一點擊它們。 但是,第一次單擊本身后出現錯誤。 控制台說:“ org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM”。
我非常確定我知道原因,因為在同一網頁上打開了鏈接,但是我正在做向后導航,這根本對我沒有幫助。
有什么想法/建議嗎?
這可能是由於程序執行提前了對“ driver.navigate()。back();”的調用。 頁面加載之前。
嘗試引入一個隱式wait ,它告訴“ WebDriver在嘗試查找一個或多個元素(如果它們不立即可用)時輪詢DOM一定時間”。
例如,當您創建Web驅動程序時,請嘗試:
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
每當頁面重新加載時,您都必須重新引用該元素,然后才能與其進行交互,對於您的代碼,請嘗試將其修改為:
driver.manage().timeouts().implicitlyWait(3000, TimeUnit.MILLISECONDS);
List<WebElement> elements = driver.findElements(By.tagName("a"));
//clicking all links
for (int i=0; i<elements.size(); i++){
WebElement el = driver.findElements(By.tagName("a")).get(i);
System.out.println("Link getting clicked" + el.getText());
el.click();
driver.navigate().back();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.