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