簡體   English   中英

一旦調用了 driver.get(URL) 方法,Selenium Java 客戶端就無法取回控制權

[英]Selenium Java Client is not getting back the control once driver.get(URL) method is invoked

driver.get("MyURL");
System.out.println("URL is opened");
executeAutoItScript(scriptFileLocation);

當我打開 URL 時,我會彈出一個需要身份驗證的窗口。 為了處理這個問題,我正在使用 AutoIt 腳本。 但問題是只要第一個命令

(driver.get("MyURL");) 

執行后,Chrome 將打開並出現身份驗證彈出窗口。 我觀察到第二行

 System.out.println("URL is opened");     

沒有被執行。 我調試了它並觀察到控制沒有被賦予下一行

driver.get("MyURL"); 

它掛在那里。 我改變了 driver.get("MyURL"); 到 driver.navigate().to("MyURL"); 但沒有運氣。 任何人都可以幫我解決這個問題。 附上彈出截圖。 在此處輸入圖片說明

根據您的代碼試驗和瀏覽器快照,瀏覽器客戶端(即Google Chrome 瀏覽器)似乎沒有將控制權返回給WebDriver實例,隨后Selenium Java 客戶端無法達到'document.readyState'的狀態等於"complete" 因此,您的下一行代碼都不是:

System.out.println("URL is opened");

正在執行,下一行中的AutoIt 腳本也沒有:

executeAutoItScript(scriptFileLocation);

解決方案

從您關於此Authentication Popup的來源的問題中不清楚。 也許在討論Selenium - Basic Authentication via url 之后,您可以傳遞嵌入在URL 中用戶名密碼,如下所示:

driver.get("http://admin:admin123@MyURL");

來自: http : //selenium-python.readthedocs.io/navigating.html

WebDriver 將等待頁面完全加載(即 onload 事件已觸發),然后再將控制權返回給您的測試或腳本。 值得注意的是,如果您的頁面在加載時使用了大量 AJAX,那么 WebDriver 可能不知道它何時完全加載。 如果您需要確保這些頁面完全加載,那么您可以使用等待。

因此,在這種情況下,您的網頁未完全加載,因為它需要身份驗證。 這是你可以做的

driver.get("MyURL");
executeAutoItScript(scriptFileLocation);
Thread.sleep(2000);// to wait for autoit script, you can also use other wait explicit wait
//Assert statement
System.out.println("URL is opened");

->首先定義驅動程序的頁面加載時間。

->通過使用 try-catch 超時異常調用 url。

->之后使用機器人類關鍵事件或關鍵事件類輸入身份驗證詳細信息

如果有任何疑問讓我知道,請嘗試以下方法:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

try{
driver.navigate().to("yourURL");
}
catch(TimeoutException te){
System.out.println(te);
System.out.println("Line went to Upto that Link");

在此之后,您可以繼續使用身份驗證彈出代碼。

如果您有任何疑問,請讓我知道。

@pulkit您是否能夠找出問題所在?我目前正在遇到此問題。 我嘗試了一堆不同的方法,但似乎都沒有用。

這幫助了我:

    InternetExplorerOptions options = new InternetExplorerOptions();
    options.setCapability("initialBrowserUrl", "about:blank");
    options.setPageLoadStrategy(PageLoadStrategy.NONE);

    WebDriver driver = new InternetExplorerDriver(options);
    driver.manage().deleteAllCookies();
    driver.manage().window().maximize();
    driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

    driver.get(url);

//執行AutoItScript到這里

暫無
暫無

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

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