一旦调用driver.get(URL)方法,Selenium Java Client就不会取回控件

时间:2018-07-25 18:51:19

标签: java selenium selenium-webdriver webdriver basic-authentication

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”);但 没有运气。谁能帮我解决这个问题。附件为 弹出屏幕截图。 enter image description here

4 个答案:

答案 0 :(得分:1)

根据您的代码试用和浏览器快照,看来 Browser Client (即 Google Chrome浏览器)没有将控件返回给 WebDriver 实例以及随后的 Selenium Java Client 无法达到等于{strong> 'document.readyState'"complete"状态。因此,您的下一行代码都不是

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

正在执行,下一行中的 AutoIt脚本也不会执行:

executeAutoItScript(scriptFileLocation);

解决方案

从您的问题中不清楚此身份验证弹出窗口的来源。也许在讨论Selenium - Basic Authentication via url之后,您可以按如下所示传递嵌入在 URL 中的用户名密码

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

答案 1 :(得分:0)

发件人: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");

答案 2 :(得分:0)

->首先定义驱动程序的页面加载时间。

->通过使用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");

此后,您可以继续进行身份验证弹出代码。

让我知道您是否有任何疑问。

答案 3 :(得分:0)

这对我有帮助:

    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在这里