如何在selenium webdriver中处理Javascript警报/弹出窗口

时间:2015-01-08 14:04:59

标签: java javascript selenium selenium-webdriver

我不确定selenium webdriver是否可以处理Javascript警报/弹出窗口。

我有一个像锡的场景 1.用户上传xls文件并单击上传按钮
2.将显示警报/弹出窗口。点击"确定"在窗口

能够自动执行上述方案,但在运行脚本时会显示警报/弹出窗口。

他们的反正解决方法是我们可以处理javascript警报/弹出窗口吗?

5 个答案:

答案 0 :(得分:9)

您也可以尝试等待警报显示然后接受

下面是代码(点击上传按钮后):

try{
   //Wait 10 seconds till alert is present
   WebDriverWait wait = new WebDriverWait(driver, 10);
   Alert alert = wait.until(ExpectedConditions.alertIsPresent());

   //Accepting alert.
   alert.accept();
   System.out.println("Accepted the alert successfully.");
}catch(Throwable e){
   System.err.println("Error came while waiting for the alert popup. "+e.getMessage());
}

答案 1 :(得分:7)

切换到默认内容 接受" OK" 否则,您的提醒来自不同的窗口,您必须切换到该窗口才能解除

driver.switchTo().alert().accept();    
driver.switchTo().alert().dismiss();  
driver.switchTo().alert().defaultConent();  

答案 2 :(得分:2)

嘲笑它。直接在UI后面调用javascript:

WebDriver driver = new AnyDriverYouWant();
if (driver instanceof JavascriptExecutor) {
    ((JavascriptExecutor)driver).executeScript("yourScript();");
}

答案 3 :(得分:0)

我们将在Alert界面中使用四种方法:

void dismiss()–弹出窗口出现后,dismiss()方法立即单击“取消”按钮。

void accept()–弹出窗口出现后,accept()方法立即单击“确定”按钮。

String getText()– getText()方法返回警报框中显示的文本。

void sendKeys(String stringToSend)– sendKeys()方法将指定的字符串模式输入到警报框中。

if(isAlertPresent(ldriver)){
Alert alert = ldriver.switchTo().alert(); 
System.out.println(alert.getText());
alert.accept();

}

答案 4 :(得分:0)

Alert 是一个接口,具有以下抽象方法

void accept();
void dismiss();
String getText();
void sendKeys(String keysToSend);

new WebDriverWait(driver,10).
until(ExpectedConditions.alertIsPresent()).accept();

alertIsPresent() internally return the 
driver.switchTo.alert(); then we don't have to write it explicitly

hope this is been helpful