Selenium Java 一旦调用 driver.get(URL) 方法,客户端就不会取回控制权
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");但
没有运气。谁能帮我解决这个问题。附件是
弹出屏幕截图。
发件人: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.
->之后使用机器人class按键事件或按键事件class输入认证详情
如果有任何疑问让我知道,请尝试以下问题:
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");
之后您可以继续验证弹出代码。
如果您有任何疑问,请告诉我。
根据您的代码试验和浏览器快照,浏览器客户端(即Google Chrome浏览器似乎) 没有将控制返回给 WebDriver 实例,随后 Selenium Java Client 无法实现'document.readyState'
的状态等于 "complete"
。因此你的下一行代码都不是:
System.out.println("URL is opened");
正在执行,下一行中的 AutoIt 脚本 也没有:
executeAutoItScript(scriptFileLocation);
解决方案
根据您的问题,我们无法清楚地了解此 身份验证弹出窗口 的来源。也许在讨论 之后,您可以传递嵌入在 URL 中的 username 和 password 如下:
driver.get("http://admin:admin123@MyURL");
这对我有帮助:
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
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");但
没有运气。谁能帮我解决这个问题。附件是
弹出屏幕截图。
发件人: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.
->之后使用机器人class按键事件或按键事件class输入认证详情
如果有任何疑问让我知道,请尝试以下问题:
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");
之后您可以继续验证弹出代码。
如果您有任何疑问,请告诉我。
根据您的代码试验和浏览器快照,浏览器客户端(即Google Chrome浏览器似乎) 没有将控制返回给 WebDriver 实例,随后 Selenium Java Client 无法实现'document.readyState'
的状态等于 "complete"
。因此你的下一行代码都不是:
System.out.println("URL is opened");
正在执行,下一行中的 AutoIt 脚本 也没有:
executeAutoItScript(scriptFileLocation);
解决方案
根据您的问题,我们无法清楚地了解此 身份验证弹出窗口 的来源。也许在讨论
driver.get("http://admin:admin123@MyURL");
这对我有帮助:
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