webdriver中处理原生js的 alert confirm 以及prompt是很方便的(虽然现在原生js的实现方式用的很少了)。具体思路是使用switchto.alert()方法定位到当前的alert/confirm/prompt(这里注意当前页面只能同时含有一个控件,如果多了会报错的,所以这就需要一一处理了),然后在调用alert的方法进行操作,alert提供了以下几个方法:
gettext : 返回alert/confirm/prompt中的文字内容
accept : 点击确认按钮
dismiss : 点击取消按钮如果有取消按钮的话
package org.coderinfo.demo;
import org.openqa.selenium.alert;
import org.openqa.selenium.by;
import org.openqa.selenium.webdriver;
import org.openqa.selenium.firefox.firefoxdriver;
public class alertdemo {
private static final string url = "file:///home/moon/desktop/alert_demo.html";
/**
* @author coderinfo
*/
public static void main(string[] args) throws interruptedexception {
webdriver driver = new firefoxdriver(); //创建一个firefox的 webdriver
driver.get(url);
driver.manage().window().maximize();
thread.sleep(1000);
// 点击弹出alert
driver.findelement(by.id("alert")).click();
thread.sleep(3000);
alert alert = driver.switchto().alert(); //捕获alert
alert.accept(); //点击确认按钮
thread.sleep(3000); //等待3s
//点击弹出confirm
driver.findelement(by.id("confirm")).click();
alert confirm = driver.switchto().alert(); //捕获confirm
string confirmtext = confirm.gettext(); //获取confirm中的文字信息
system.out.println(confirmtext);
confirm.accept(); //confirm 点击确认按钮
// confirm.dismiss(); //confirm点击取消按钮
//点击弹出prompt
driver.findelement(by.id("prompt")).click();
alert prompt = driver.switchto().alert(); //捕获prompt
// string prompttext = prompt.gettext(); //获取prompt中的文字信息
// system.out.println(prompttext);
prompt.sendkeys("可能是由于太懒了"); //向prompt中输入内容
prompt.accept(); //prompt 点击确认按钮
// prompt.dismiss(); //prompt点击取消按钮
driver.quit(); // close webdriver
}
下面是测试页面alert_demo.html源代码
<html>
<head>
<title>alert</title>
<script type="text/javascript">
function testalert(){
alert("测试alert");
function testconfirm(){
confirm("你喜欢自动化测试吗?");
function testprompt(){
var content = prompt("你为什么喜欢自动化?");
document.write(content);
</script>
</head>
<body>
<h2>test alert</h2>
<input type="button" value="alert" onclick="testalert()" id="alert"/>
<input type="button" value="confirm" onclick="testconfirm()" id="confirm"/>
<input type="button" value="prompt" onclick="testprompt()" id="prompt"/>
</body>
</html>
最新内容请见作者的github页:http://qaseven.github.io/