此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作。

下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一种是 Select 的下拉列表,此种操作的时候比较简单,定位到元素后直接操作即可;还有的下拉列表是以多个 div + js + input 的形式实现,input 用于存储选择的项的 value 值;当然也会有其他方式实现的下拉列表。

希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助。若有不足之处,敬请大神指正,不胜感激!

以下为 Selenium 操作下拉列表 Select 的 Java 自动化测试脚本实例源代码,敬请参阅!

 package main.aaron.demo.droplist;

 import main.aaron.sele.core.TestCase;

 import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.Test; /**
* Selenium 操作下拉列表实例-Select
*
* @author Aaron.ffp
* @version V1.0.0: autoSeleniumDemo main.aaron.demo.droplist Droplist01.java, 2015-6-16 19:03:51 Exp $
*/
public class Droplist01 extends TestCase{
// 获取需要打开的链接的 URL 路径
private final String baseUrl = this.PROJECTHOME + this.FILESEPARATOR + "source" +
this.FILESEPARATOR + "html" + this.FILESEPARATOR + "selectDemo.html"; @Test
public void testDropList(){
this.webdriver.get(this.baseUrl); // 获取元素-下拉列表
WebElement goodsTypeList = this.webdriver.findElement(By.id("goodsType")); // 将元素转换为 Select
Select gtl = new Select(goodsTypeList); // 模拟用户点击动作展开下拉列表,也可不执行直接选择;
// 若是执行此步再选择下拉列表之后无其他操作时,列表会一直存在;执行其他操作时,列表收起
goodsTypeList.click(); // 通过列表项的 option 索引选择,也可不执行
gtl.selectByIndex(3); this.webdriver.findElement(By.id("goods")).clear();
this.webdriver.findElement(By.id("goods")).sendKeys(this.selectSelected(gtl)); /**
// 通过列表项的 option 的 value 值选择
gtl.selectByValue("3v"); // 通过列表项的 option 的 text 值选择
gtl.selectByVisibleText("汽车精品"); // 遍历列表项的所有可选项,并选择对应的项
for (int i = 0; i < gtl.getOptions().size(); i++) {
gtl.getOptions().get(i).click();
} // 遍历列表项的所有可选项,并选择对应的项
for (WebElement item : gtl.getOptions()) {
item.click();
}
*/
}
}

Selenium 操作下拉列表实例-Select 源代码

以下为上述代码中调用的方法源码

 /**
* 获取 Select 已选中的项的 text 值
*
* @author Aaron.ffp
* @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java selectSelected, 2015-6-16 19:40:02 Exp $
*
* @param select : Select 下拉列表对象
* @return 已选择项的 text 值
*/
public String selectSelected(Select select){
String text = ""; for (int i = 0; i < select.getOptions().size(); i++) {
if (select.getOptions().get(i).isSelected()) {
text = select.getOptions().get(i).getText(); return text;
}
} return text;
}

selectSelected 方法

以下为 Select 下拉列表源码(selectDemo.html):

 <html>
<head>
<meta charset='utf-8'>
<title>下拉列表框</title>
</head> <body>
<a id="goodtype">商品分类:</a>
<select id="goodsType">
<option value="0v">请选择...</option>
<option value="1v">笔记本</option>
<option value="2v">硬件外设</option>
<option value="3v">大家电</option>
<option value="4v">创意小电</option>
<option value="5v">个护电器</option>
<option value="6v">汽车精品</option>
<option value="7v">办公文具</option>
</select> <input id="goods" type="text"></input>
</body>
</html>

Select 下拉列表源码 selectDemo.html

  由上述源码可知,操作下拉列表-Select 时,首先要获得 Select 元素(Selenium 自动化页面操作的基础),再 new 一个 Select 对象,然后对 Select 对象进行操作,即可正确的进行下拉列表的操作,以及获取下拉列表当前已选择的项值。动手能力强的亲们,也可以自己封装一下 Selenium 对 Select 的操作几个有用方法,例如:判断 option 的 value 是否存在;判断 option 的 text 值是否存在;判断 index 值是否超出 option 的数组边界。。。等等,用于后续的 WEB UI 自动化。

  选择下拉列表项的方法有三种:(1)option 的 index,(2)option 的 value,(3)option 的 text。无论选择哪种方法,建议对三者的值进行校验判断,否则易出现元素不存在的错误,当然也可以对代码 try...catch 一下,以处理异常。

  PS:使用上述源码时,注意一下几点:

  1、替换源码中的 baseUrl 为实际路径;

  2、将 selectSelected 方法正确添加到源码,否则执行的时候会报错

  3、自行添加启动浏览器的代码

下拉列表框操作下期精彩:Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

至此,WebUI 自动化功能测试脚本第 008 篇-下拉列表框 Select 操作 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select的更多相关文章

  1. Selenium2学习-001-Selenium2 WebUI自动化Java开发 Windows 环境配置

    此文主要介绍 Selenium2 WebUI自动化Java开发 Windows 环境配置,供各位亲们参考,若有不足之处,敬请各位大神指正,非常感谢! 所需软件列表如下所示: 所属分类 具体名称 备注 ...

  2. Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

    之前已经讲过了 Selenium 操作 Select 实现的下拉列表:Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select,但是在实际的日 ...

  3. Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

    此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...

  4. Selenium2学习-035-WebUI自动化实战实例-033-页面快照截图应用之三 -- 区域截图(专业版)

    之前有写过两篇博文讲述了 WebUI 自动化测试脚本中常用的截图方法,敬请参阅如下所示链接: 浏览器显示区域截图 浏览器指定区域截图 那么当需要截取的区域不在浏览器显示窗口范围之内时,之前的方法显然无 ...

  5. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  6. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  7. Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

    日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...

  8. Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择

    在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...

  9. Selenium2学习-004-WebUI自动化实战实例-002-百度登录

    此文主要通过 百度登录 功能,进行 Selenium2 的实战实例讲解.文中所附源代码于 2015-01-17 23:33 亲测通过,敬请亲们阅览.同时,您也可参考此文进行其他网站(例如 京东.易迅. ...

随机推荐

  1. TextBlock 格式化内容

    Text="{Binding ContentName,StringFormat=分享好书\{0\}}"

  2. 【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)

    http://cojs.tk/cogs/problem/problem.php?pid=147 学到新姿势了orz 这题求的是一条1-n的路径的最大路径最小. 当然是在k以外的. 我们可以转换一下. ...

  3. Nginx location 匹配规则

    1. default_server: 当请求没有匹配到服务器中配置的任何一个server的时候,会默认把请求route到配置了default_server的virtual host中.参考地址:htt ...

  4. winform学习之----重新绘制边框方法延伸

    方法1. Pen pen1 = new Pen(Color.FromArgb(233, 149, 87));           e.Graphics.DrawRectangle(pen1, new ...

  5. 几种进入mysql的方法

    1.首先mysql服务得打开(运行cmd命令也可以net start mysql) 2.运行cmd,打开mysq 3.mysql命令行打开mysql 4.图形管理工具,如phpMyadmin

  6. sql like模糊查询

    1.SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*). 2.LIKE 通常与 % 一同使用,类似于一个元字符的搜索. 3. > SELECT ...

  7. page show

    controller public function record() { $r = ; $m = M(); $query = $m->query('select count(1) as cou ...

  8. Connection Management and Security

    High Performance My SQL  THIRD EDITION Each client connection gets its own thread within the server ...

  9. 【转】const 是左结合的,若左边为空,则再向右结合

    const 是左结合的,若左边为空,则再向右结合 一.指向  const  对象的指针指向  const  对象的指针,指的是指针指向的对象的内容是const的,不可修改,但指针本身(即指针的值)是可 ...

  10. jboss4.2.3建立oracle JMS应用

    一.基本配置 1 增加oracle驱动文件,ojdbc6.jar,不能使用小于该版本的jdbc驱动,jboss-4.2.3.GA\server\default\lib 2 增加retrotransla ...