【问题标题】:selenium UnhandledalertException on firefox not executing Webdriver ClassesFirefox 上的 selenium UnhandledalertException 未执行 Webdriver 类
【发布时间】:2018-03-20 13:25:01
【问题描述】:

Autoit 脚本完成后,通过 Windows 验证登录我的 selenium 停止工作,并且不在浏览器 (Firefox) 上执行任何命令

系统

版本:19.0 平台:Windows 7 火狐:56.0(64 位) 硒:3.6.0 测试用例

我想获取我的网页标题,但无法将其打印为浏览器不读取任何 .driver 类

public static void main(String[] args) throws IOException {
    System.setProperty("webdriver.gecko.driver", "C:/Users/aamir.fatimi/Downloads/geckodriver-v0.19.0-win64/geckodriver.exe");

WebDriver driver = new FirefoxDriver();
driver.get("http://dbu-export-09/en/Pages/default.aspx");
Runtime.getRuntime().exec("C:\\Users\\aamir.fatimi\\Desktop\\AutoIT\\Autoit.exe");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
String get_Title = driver.getTitle();

System.out.println("Title is" + get_Title);
driver.quit();

【问题讨论】:

  • 是否有异常显示或只是挂起?
  • 尝试使用 Thread.sleep() 函数或在调试模式下尝试。
  • @AlexeyR。我已经提到堆栈跟踪不会被挂起,它只是在身份验证后打开我的网页,然后不执行任何命令
  • @AlexeyR。当我在 chrome 中做同样的事情时,当 selenium 单击我提到的元素然后它开始重新加载网页时,又发生了一件事,这使我的脚本失败。
  • “当硒点击我提到的元素”。正如我从您的脚本中看到的那样,Selenium 不会单击任何元素。只有 AutoIt 可以。 Selenium 只是加载页面,然后尝试获取页面标题。

标签: java selenium firefox selenium-webdriver geckodriver


【解决方案1】:

已编辑:

您可以尝试通过这种方式等待警报不存在:

(new WebDriverWait(driver, 10))
    .until(ExpectedConditions.not(ExpectedConditions.alertIsPresent()));

在您的 Autoit 脚本执行之后,确保 WebDriver 在 Autoit 实际完成时获得标题。 当然假设您的 Autoit 脚本不会留下任何警报,在这种情况下您可以简单地尝试:

//Snippet from answer of smit9234 - not tested
try {
    Alert alert = driver.switchTo().alert();
    alert.sendKeys(username + Keys.TAB.toString() + password);
    alert.accept();
} catch (Exception e) {
    e.printStackTrace();
}

再次,在脚本之后(或者甚至可能相反,如果脚本应该关闭警报并且只是工作不正确/不一致)脚本。或者修改 Autoit 以关闭警报,然后使用选项 1。

【讨论】:

  • 如果没有提供此信息,您怎么知道警报是 Windows 警报?在这种情况下,我用 Autoit 关闭警报的建议如何无济于事?请重新考虑您的反对意见。
  • 抱歉,这与什么有什么关系?你看过我的回复了吗?
  • Kudin,编辑你的答案,我会支持你。你的答案是正确的。
  • 用您的 sn-p 编辑
【解决方案2】:

扩展上面 Kudin 的答案:

  1. 删除 AutoIT 脚本
  2. 添加以下内容来代替它
try {
    Alert alert = driver.switchTo().alert();
    alert.sendKeys(yourusername + Keys.TAB.toString()+yourpassword);
    alert.accept();
} catch (Exception e) {
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多