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