如何在Selenium WebDriver中处理一个弹出式确认框,该弹出式确认框有不同的按钮字样而不是OK / Cancel?(参见说明)

时间:2016-03-19 10:56:47

标签: selenium-webdriver popupwindow

我正在尝试创建一个Selenium WebDriver程序来登录Facebook并执行一些操作,比如写一个状态。但每当我启动我的谷歌Chrome浏览器并登录到FB时,我都会收到一个允许通知弹出确认框,其中按钮的含义是允许和阻止(不是确定/取消)。

我尝试了Alert.dismiss方法,但它无法正常工作。我收到“没有这样的警告”错误,我的程序没有继续前进,因为我无法点击弹出窗口上的任何按钮使其消失。另外如何在Selenium WebDriver中处理一个弹出式确认框,该弹出式确认框有不同的按钮字样而不是OK / Cancel?请帮忙。 (无法添加通知弹出窗口的屏幕截图)

2 个答案:

答案 0 :(得分:1)

我在Oodles Technologies工作期间学会了如何处理Silenium中的弹出窗口。我告诉你我是怎么做的。

在编写处理Alert消息的代码之前,我们需要定义一些包

import org.openqa.selenium.Alert;        
import org.openqa.selenium.By;        
import org.openqa.selenium.NoAlertPresentException;
  1. void dismiss(): - 允许程序员点击“警报”框的“取消”按钮。                     driver.switchTo()警报()驳回();

  2. void accept(): - 允许程序员点击“警报”框的“确定”按钮。

                    driver.switchTo().alert().accept();
    
  3. String getText(): - 它只是允许程序员捕获警报框。

                driver.switchTo().alert().getText();
    
  4. void sendKeys(String stringToSend): - 允许程序员将数据发送到警告框。                 driver.switchTo()警报()的SendKeys(“文本”);
  5. 如何在Selenium WebDriver中处理弹出窗口

    在编写代码来处理Popup窗口之前,我们需要在代码中编写一些包

    import java.util.Iterator;        
    import java.util.Set;        
    import org.openqa.selenium.By;    
    Driver.getWindowHandles() :- It allow programmer to handle multiple number of popup windows  
    Driver.getWindowHandle() :-  It Allow programmer to handle the main current window 
    

答案 1 :(得分:0)

如果这是Chrome(内置)对话框,那么这将有效:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.onbeforeunload = function() {};"); 

我过去曾使用此功能来阻止“确认导航对话框”(当试图离开页面时)出现并且效果很好。

否则,请使用:

Driver.SwitchTo.Alert.Accept()