如何处理没有任何元素的浏览器通知弹出窗口?

如何按照图像按OK按钮。 我可以切换到这个窗口。 但它没有加载,直到我点击确定,所以没有任何元素。 警报手柄也没有帮助。 Autoit也无法检测到此弹出消息。 禁用通知也无法帮助。 有任何想法吗? 添加了两个screeshots。

Firefox快照:

从FF看

Chrome快照:

从Chrome看

 p.companieGenreal.sActivities().click(); driver.switchTo().defaultContent(); String parent = driver.getWindowHandle(); p.companieGenreal.sAddNew().click(); p.companieGenreal.sAddJobOrder().click(); p.companieGenreal.sContract().click(); swithToChildWindow(parent); driver.switchTo().alert().accept(); 

要将其视为警报,请尝试以下操作:

  Alert a = driver.switchTo().alert(); a.confirm(); 

如果可以使用Escape键关闭它,请像这样发送Escape按键(如果按Enter键,则按ENTER键 ):

 Actions action = new Actions(driver); action.sendKeys(Keys.ESCAPE); 

beforeunload

当窗口,文档及其资源即将卸载时,将触发beforeunload事件。 此时文档仍然可见,事件仍然可以取消。

注意 :自2011年5月25日起, HTML5规范声明在此事件期间可能会忽略对window.alert()window.confirm()window.prompt()方法的调用。

有多种方法可以禁用此弹出窗口,如下所示:

  • Firefox:如果您使用Firefox作为浏览器客户端 ,则可以使用FirefoxOptions()的实例并将首选项dom.disable_beforeunload设置为true ,如下所示:

     System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe"); FirefoxOptions firefox_option = new FirefoxOptions(); firefox_option.addPreference("dom.disable_beforeunload", true); WebDriver firefox_driver = new FirefoxDriver(firefox_option); firefox_driver.get("https://stackoverflow.com/"); 
  • Chrome:如果您使用Chrome作为浏览器客户端 ,则可以使用ChromeOptions()的实例并添加参数--disable-popup-blocking ,如下所示:

     System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); ChromeOptions chrome_option = new ChromeOptions(); chrome_option.addArguments("--disable-popup-blocking"); chrome_option.addArguments("start-maximized"); chrome_option.addArguments("disable-infobars"); WebDriver chrome_driver = new ChromeDriver(chrome_option); chrome_driver.get("https://stackoverflow.com/"); 

如果这是一个警报,您可以使用以下方法处理:

1)。 driver.switchTo()警报()接受()。;

2)。 “行动课”

  Actions builder=new Actions(driver); builder.sendKeys(keys.ESCAPE); 

3)。如果上述两种方法都不起作用,则会有一种称为“甜蜜警报”的特殊警报类型,可以对其进行检查和编写代码。

试着用这个:

  public static void acceptAlertUsingJs(WebDriver driver) { ((JavascriptExecutor)driver).executeScript("window.alert = function(msg){return true;};"); ((JavascriptExecutor)driver).executeScript("window.prompt = function(msg) { return true; }"); ((JavascriptExecutor)driver).executeScript("window.confirm = function(msg) { return true; }"); } 

请尝试以下代码,看看它是否有帮助:

 if (isAlertPresent()){ driver.switchTo().alert().accept(); driver.switchTo().defaultContent(); } } public static boolean isAlertPresent() { try { driver.switchTo().alert(); Thread.sleep(5000); return true; }// try catch (Exception e) { return false; }// catch } 

我有一个类型的问题,模式弹出窗口打开,我可以切换到和 示例图像 单击确定按钮但无法获取其中的文本。 modal dialog在屏幕截图中共享,没有html标签,因此我无法使用任何定位器找到文本。 我尝试使用driver.switchTo()。alert()。getText()来获取其中的文本。