线程“主”org.openqa.selenium.NoAlertPresentException 中的异常:没有打开警报

Posted

技术标签:

【中文标题】线程“主”org.openqa.selenium.NoAlertPresentException 中的异常:没有打开警报【英文标题】:Exception in thread "main" org.openqa.selenium.NoAlertPresentException: no alert open 【发布时间】:2016-06-17 13:58:03 【问题描述】:

使用Selenium Webdriver,我尝试登录后打开fb页面。登录后,出现如下弹出框 "显示通知 允许和阻止” 我想选择“允许”按钮。

我收到一条错误消息

线程“main”中的异常 org.openqa.selenium.NoAlertPresentException:没有打开警报

请帮忙。

这是我写的代码:

System.setProperty("webdriver.chrome.driver","C:\\Users\\ABCD\\Desktop\\chromedRiver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.facebook.com");      
driver.findElement(By.xpath(".//*[@id='email']")).sendKeys("xxx");
driver.findElement(By.xpath(".//*[@id='pass']")).sendKeys("xxx");
driver.findElement(By.xpath(".//*[@id='u_0_m']")).click();
Thread.sleep(2000);
Alert alert=driver.switchTo().alert();
String msg= alert.getText();
System.out.println(msg);
Thread.sleep(2000);
alert.accept();

【问题讨论】:

不是原生警报必须是 iframe。你需要切换到框架并点击你想要的选项 它实际上是一个浏览器通知,它不是DOM的一部分 【参考方案1】:

这不是 Zach 所说的警报,而是浏览器通知,在您的情况下,您只需使用 Java 中的 Robot 类发送空格键即可按下允许按钮:

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_SPACE);

所以代码是:

System.setProperty("webdriver.chrome.driver","C:\\Users\\ABCD\\Desktop\\chromedRiver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.facebook.com");      
driver.findElement(By.xpath(".//*[@id='email']")).sendKeys("xxx");
driver.findElement(By.xpath(".//*[@id='pass']")).sendKeys("xxx");
driver.findElement(By.xpath(".//*[@id='u_0_m']")).click();
    Thread.sleep(4000);
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_SPACE);
    robot.keyRelease(KeyEvent.VK_SPACE);
Thread.sleep(2000);

我不确定是否有办法像您尝试的那样检索通知消息。

【讨论】:

以上是关于线程“主”org.openqa.selenium.NoAlertPresentException 中的异常:没有打开警报的主要内容,如果未能解决你的问题,请参考以下文章

线程“主”java.lang.NoClassDefFoundError 中的异常:org/openqa/selenium/WebDriver

我收到“线程“主”java.lang.NoClassDefFoundError:org/openqa/selenium/WebDriver 中的异常”

线程“主”java.lang.AbstractMethodError 中的异常:接收器类 org.openqa.selenium.chrome.ChromeOptions 未使用 Selenium 定

Selenium WebDriver 在线程“main”org.openqa.selenium.ElementNotInteractableException 中抛出异常

我在线程“main”中的getException org.openqa.selenium.ElementNotInteractableException

org.openqa.selenium.SessionNotCreatedException