Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框

这篇文章介绍系统提示框(Alert/Pop up)的操作。在一个网页中点击网页控件有时会弹出提示框,很多都是用javascript写的,用来提醒或告知用户当前的操作信息。它的主要形式有三种。第一种,弹出来一句提示和一个OK按钮:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第1张图片

第二种,弹出来带有选择的确认提示框,有两个按钮,OK和Cancel:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第2张图片

第三种,弹出来带有输入功能的确认提示框,同样两个按钮OK和Cancel:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第3张图片

我们还是用示例网站webelements.html讲解。点击“确定”或“取消”按钮会弹出第一种提示框,看到它你啥都干不了,只能点OK按钮。而且整个网页感觉像是被锁住一样,鼠标点点别处也不行。提示框就是这样,一旦弹出来整个网页的聚焦就都跑到提示框上去了。

所以,要想操作提示框首先要改变聚焦。用driver连续调用switchTo()和alert()方法:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第4张图片

switch本身中文含义是“转换”,switchTo()就是“转到xxx”,alert()指代的又是提示框,整句话的意思就是“把当前的焦点从网页转到提示框上”。演示一下,新建一个叫SeleniumAlert的java项目 -> 包com.test -> Test.java,添加selenium jar包,把driver声明配置好,把webelements.html网页全屏打开:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第5张图片

然后点击网页上的确定按钮,并把焦点转移到提示框上:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第6张图片

注意,调用方法之后返回的不再是我们熟悉的WebElement类型的对象了,因为我们改变焦点了嘛,对不对?新焦点不是原网页上的任何控件,而是提示框,所以对象类型变成了Alert。有人说提示框不也是其中一种控件么?为什么还要分成WebElement和Alert两个类。其实我也不清楚为什么,他们事儿b,我们别纠结。

虽然声明成两个类,但提示框的操作其实和一般网页元素的原理还是相同的。提示框的常用操作如下:

1. 取出提示框上的文字;
2. 点击OK按钮;
3. 点击Cancel按钮;
4. 输入文字。

第一个取文字操作用的方法是getText(),和大多数控件得到文本的使用方法一样,它会取出提示框上的文字:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第7张图片

第二个是点击OK或Cancel按钮。提示框和一般控件不一样,一般按钮用click()方法,提示框用的是accept()或dismiss()方法,点击OK用accept(),点击Cancel用dismiss()。我举两个小例子:点击WebElements.html里的取消按钮,然后点OK;再点一遍取消按钮,然后点Cancel:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第8张图片

因为我写的是个模拟程序,你点OK或是Cancel其实没什么不一样,我们就是演示一下而已。有一点需要注意,提示框被点掉之后焦点将自动回到原网页,我们不用再用switchTo()方法手动给它改回来了。

最后一个操作是输入,还是用sendKeys()方法。比如点击WebElements.html的退出按钮,让你说说退出原因:

Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框_第9张图片

以上就是系统提示框的主要操作,我们说了个重要概念,用driver.switchTo()进行焦点转换。其实焦点转换不光局限于网页和提示框之间,还可以用在网页与链接,网页与框架之间转换等等。下一篇我们就以此为基础继续拓展,介绍一下框架(frame)的操作。

这篇文章的源代码是SeleniumAlert项目。

本篇知识点及注意事项:
1.测试提示框时要把当前的焦点从网页转到提示框上。
2.提示框被点掉之后焦点将自动回到原网页,我们不用再用switchTo()方法手动给它改回来了。

你可能感兴趣的:(Selenium Web Driver自动化测试(java版)系列下半部分(18) - 元素操作 - 提示框)