Selenium2.0功能测试之Alert/Confirm/Prompt的处理

   WebDriver中处理原生JS的 alert confirm 以及prompt是很方便的(虽然现在原生JS的实现方式用的很少了)。具体思路是使用switchTo.alert()方法定位到当前的alert/confirm/prompt(这里注意当前页面只能同时含有一个控件,如果多了会报错的,所以这就需要一一处理了),然后在调用Alert的方法进行操作,Alert提供了以下几个方法:

  getText : 返回alert/confirm/prompt中的文字内容

  accept : 点击确认按钮

  dismiss : 点击取消按钮如果有取消按钮的话

  sendKeys : 向prompt中输入文字    //这个方法在chromedriver中不起作用,IE的话由于家中无Windows没有做demo.


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();

Thread.sleep(3000);

Alert confirm = driver.switchTo().alert();  //捕获confirm

String confirmText = confirm.getText(); //获取confirm中的文字信息

System.out.println(confirmText);

confirm.accept();  //confirm 点击确认按钮

//      confirm.dismiss();  //confirm点击取消按钮

Thread.sleep(3000);

//点击弹出prompt

driver.findElement(By.id("prompt")).click();

Thread.sleep(3000);

Alert prompt = driver.switchTo().alert();  //捕获prompt

//      String promptText = prompt.getText(); //获取prompt中的文字信息

//      System.out.println(promptText);

prompt.sendKeys("可能是由于太懒了");  //向prompt中输入内容

Thread.sleep(3000);

prompt.accept();  //prompt 点击确认按钮

//      prompt.dismiss();  //prompt点击取消按钮

Thread.sleep(3000);

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/

  

时间: 2024-10-25 11:19:30

Selenium2.0功能测试之Alert/Confirm/Prompt的处理的相关文章

Selenium2.0功能测试之Web元素的定位

页面元素的定位可以说是WebDriver中最核心的内容了,我们定位元素的目的主要有:操作元素,获取该元素的属性,获取元素的text以及获取元素的数量,WebDriver 为我们提供了以下几种方法来帮我们定位web元素: 通过元素的id获取 通过元素的name获取 通过元素的tag name 获取 通过css xpath 获取 通过xpath 获取 通过class name  获取 通过一部分的link text 获取元素 通过全部的link text 获取元素 唯一元素的定位: package

Selenium2.0功能测试之Close browser

关闭浏览器是每条Case执行完成或者测试进行结束必要的操作,Selenium提供了两种关闭浏览器的方法: driver.close() ; 作用为关闭当前的浏览器窗口. driver.quit(); 作用为不仅关闭了当前的浏览器窗口还彻底的退出WedDriver,释放了Driver与Server之间的链接.一句话总结就是:quit是更加彻底的close,quit会更好的释放资源.所以quit方法比较适合我这种强迫症患者,那么到底用哪种方式关闭浏览器就以你自己的病症而异了. package org

Selenium2.0功能测试之WebDriver执行JS方法

如果你是一个JS高手的话可以在WebDriver 中直接执行JS代码来提升效率,一般用到执行js的场景主要分一下两种: 在页面加载的时候执行JS 在某个已经定位了的元素上执行js Demos: package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import or

Selenium2.0功能测试之你所不知道的sendKeys

其实光看字面上的理解sendKeys这个api感觉只有输入字符这一个功能,其实这样理解是错误的其实这个api的真正作用是模拟键盘的操作(包含了输入字符),不过输入字符是其主要的功能,下面介绍一下其他的用法: 这里就直接上代码了 package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import

Selenium2.0功能测试之如何使用Action类来模拟交互

Selenium提供了一个强大的用于真实的模拟用户交互的一个类----Actions,这个类提共了一系列的API供模拟交互: keyDown : 用于模拟按键被按下 keyUp : 用于模拟按键松开 doubleClick : 用于模拟双击 clickAndHold : 用于模拟鼠标左键点住不放开 release : 用于模拟松开鼠标,与clickAndHold相配合 moveToElement : 将鼠标移动至元素的中间位置 contextClick : 模拟鼠标右键点击 dragAndDro

Selenium2.0功能测试之设置浏览器大小

设置浏览器的大小有什么用处呢? 我想是这样的,当我们需要在测试中使用一些第三方的图像或者基于坐标的辅助工具时,就需要我们的浏览器在每次测试的时候处于同一个分辨率的状态,这样在同一个分辨率的情况下进行图片比对以及坐标的点击操作. 举一个例子:如果用Selenium操作带有Flash插件的页面,就需要借助第三方的Sikuli工具进行图形化的比对操作(具体怎么操作以后有机会在说吧,内容有点复杂),这样为了保证分辨率一致最大化浏览器肯定就是最简单省力的方案了: 最大化浏览器: package org.c

Selenium2.0功能测试之唯一元素的定位

页面元素的定位可以说是WebDriver中最核心的内容了,我们定位一个元素的目的主要有:操作元素,获取该元素的属性,获取元素的text以及获取元素的数量,WebDriver 为我们提供了以下几种方法来帮我们定位一个web元素: 通过元素的id获取 通过元素的name获取 通过元素的tag name 获取 通过css xpath 获取 通过xpath 获取 通过class name  获取 通过一部分的link text 获取元素 通过全部的link text 获取元素 package org.c

Selenium2.0功能测试之文件上传(Java版)

对于上传文件的用例,首先需要找到上传文件的对象,然后直接往这个对象sendKeys,传入需要上传文件的正确路径,绝对路径和相对路径都可以的,但是上传的文件必须存在,否则会报错.下面直接看例子吧: package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * @

Selenium2.0功能测试之Web元素的操作

我们定位到元素之后80%的目的都是要操作这个 web元素,所以Web元素的操作也是非常重要的,这里介绍WebDriver几种主要的操作方法: click :点击当前的元素 sendKeys :在当前的web元素上模拟键盘的操作 clear : 清除当前元素的内容,前提是当前元素可以接收内容的话 下面直接上代码了: package org.coderinfo.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDri