selenium对firefox没有执行Webdriver类的UnhandledalertException

时间:2017-10-09 10:51:43

标签: java selenium firefox selenium-webdriver geckodriver

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

系统

版本:19.0 平台:Windows 7 Firefox: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();

2 个答案:

答案 0 :(得分:-1)

<强>编辑:

您可以尝试以这种方式等待警报缺席:

(new WebDriverWait(driver, 10))
    .until(ExpectedConditions.not(ExpectedConditions.alertIsPresent()));
执行Autoit脚本后立即执行以确保WebDriver在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();
}

再次,紧接着(或者甚至可能相反,如果脚本应该关闭警报并且只是错误地/不一致地工作)脚本。或者修改自动关闭警报,然后选择选项1.

答案 1 :(得分:-1)

扩展Kudin的答案:

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