簡體   English   中英

為什么 Selenium 在忙於加載另一個頁面時不能執行 driver.get(URL)?

[英]Why can't Selenium exeute a driver.get(URL) when busy loading another page?

我使用 Selenium 在公共網站上自動執行任務。

首先,我通過輸入用戶名/密碼然后單擊登錄在 https://somesite/login 登錄。 之后我想加載另一個頁面(https://somesite/anotherpage)。

第二步失敗,因為在第一步之后開始頁面 https://somesite/ 開始加載並且需要一些時間才能完成並且如果瀏覽器正忙於加載另一個頁面,則driver.get(someURL)似乎不會執行。

  1. 如果在另一個頁面尚未完成加載時執行driver.get(someURL)為什么會失敗?

  2. 我真的需要使用 wait.until(ExpectedConditions... (或者是他們更好的選擇嗎?) 並在加載下一頁之前驗證 https://somesite/ 是否已完成加載?這不是瀏覽器在使用時的工作方式“手動”。

您可以嘗試使用此代碼等待元素可見。

private void waitForVisible(WebDriver driver, WebElement element) {
        try {
            WebDriverWait wait = new WebDriverWait(driver, 30);
            wait.until(ExpectedConditions.visibilityOf(element));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我實際上已經完成了一些網絡自動化項目,其中我使用以下代碼打開了多個選項卡:

((JavascriptExecutor) driver).executeScript("window.open()");//open new tab
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));//switch tabs
driver.get("link_to_open_in_new_tab");

這非常快,所以我建議你試試這個......即使你等待上一頁完全加載,你也可以輕松切換標簽:

driver.switchTo().window(tabs.get(tabnumber));

使用此代碼,我從未遇到打開新標簽頁的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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