簡體   English   中英

單擊Selenium Webdriver中的Web鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM