Selenium 2 WebDriver未处理的AlertException Java

Selenium 2 WebDriver未处理的AlertException Java,java,internet-explorer,netbeans,selenium-webdriver,maven-plugin,Java,Internet Explorer,Netbeans,Selenium Webdriver,Maven Plugin,现在,在我开始被责骂之前,我确实阅读了关于这一点的大多数现有问题,并应用了不同的解决方案(大部分重复相同的事情),但它仍然不适用于我。 我有一个maven项目和所有必要的依赖项,测试中的网站是专门为IE做的,需要我有一个特定的证书才能访问它。我有证书,当我进入网站时,在加载页面之前,它会要求我确认我有证书,我需要在弹出窗口中确认,然后登录页面完全加载。 我已经完成了以下工作: WebDriverWait wait = new WebDriverWait(driver, 3); try {

现在,在我开始被责骂之前,我确实阅读了关于这一点的大多数现有问题,并应用了不同的解决方案(大部分重复相同的事情),但它仍然不适用于我。 我有一个maven项目和所有必要的依赖项,测试中的网站是专门为IE做的,需要我有一个特定的证书才能访问它。我有证书,当我进入网站时,在加载页面之前,它会要求我确认我有证书,我需要在弹出窗口中确认,然后登录页面完全加载。

我已经完成了以下工作:

WebDriverWait wait = new WebDriverWait(driver, 3);
try {
    // Handle alert box
    driver.navigate().to("https://ke.m-pesa.com/ke/");
    wait.until(ExpectedConditions.alertIsPresent());
    Alert alert = driver.switchTo().alert();
    alert.accept();
} 
catch(Exception e) {
    //whatever
}
你能告诉我哪里出了问题吗?到目前为止,我只使用了Selenium RC,所以这个webdriver对我来说还是一个新东西。请告诉我,如果你需要任何更多的信息,我需要提供。
为什么我仍然有未处理的AlertException??为什么在我手动按下“确定”按钮之前无法访问登录页面?

您尝试过使用Robot吗?比如:

     Alert alert = driver.switchTo().alert();
     Robot a = new Robot();
     a.keyPress(KeyEvent.VK_ENTER);

为什么是机器人而不是动作

:

这些工具的工作方式有很大的不同。 Selenium使用WebDriver API并向浏览器发送命令以 执行操作(通过“JSON wire协议”)

JavaAWT机器人使用本机系统事件来控制鼠标和鼠标 键盘

如果您正在进行浏览器自动化,理想情况下,您永远不会使用 像Robot这样的东西通常是由selenium提供的功能 这已经足够了。不过,也有浏览器的情况 或打开本机操作系统弹出窗口,例如上载/下载文件- 这也是机器人可以解决的问题-


我只是不认为证书窗口是一个警报窗口。你会把它归为什么?通过说“它不是警报窗口”,真正的意思是,“WebDriver无法识别它是一个可以操作的窗口。”
alert
接口设计为只处理JavaScript
alert()生成的对话框
确认()
提示()
函数。不错,我们不熟悉这些函数。这与Actions类有什么不同?@StasS没有看到你问了这个问题:)。我把它留在这里供参考。谢谢你的邀请。是的,我很好奇:)谢谢迈克尔!