文章目录

  • 一、基于 Java 语言的 Selenium 环境搭建
  • 二、编写测试脚本
  • 1.定浏览器驱动,打开浏览器
  • 1.1 IE
  • 1.2 Firefox
  • 1.3 Google
  • 2.关闭浏览器窗口
  • 3.设置等待时间
  • 4.打开网址
  • 5.识别页面元素
  • 5.1 driver.findElement(By.属性)
  • 5.2 driver.findElements(By.属性).get(下标)
  • 6.操作页面元素的方法
  • 6.1 文本框+密码框+多行文本框
  • 6.2 单选按钮+复选框
  • 6.3 下拉列表
  • 6.4 链接+命令按钮
  • 6.5 通过TagName和xpath识别控件
  • 6.6 通过id和ClassName识别控件


一、基于 Java 语言的 Selenium 环境搭建

  • 安装 jre+eclipse,创建 Java 项目
  • 在前面的测试方法之Java白盒测试(二)文章中有详细介绍
  • 安装 selenium:在 eclipse 中导入如下包
    ✔     selenium-java-3.9.1.zip
    ✔     selenium-server-standalone-3.9.1.jar

  • 准备浏览器驱动器
    ✔     无需安装,复制到某个位置(此位置需要写到代码中)
    ✔     IEDriverServer、chromedriver(google)、geckodriver(Firefox)
    ✔     webdriver.Ie()、.Chrome()、.Firefox()
  • 使用 Selenium IDE
    ✔     断网安装 Firefox57
           ★     选择自定义安装(不要选择默认安装),取消勾选"安装维护服务"
           ★     安装完成后,工具—选项—常规—firefox 更新:勾选“不检查更新”即可,去掉勾选“自动更新搜索引擎”

    ✔     联网安装 SeleniumIDE
           ★     设置—附加组件—扩展—搜索 SeleniumIDE,然后安装
           ★     在Web自动化测试实战(二)文章中也有详细介绍过SeleniumIDE
  • 打开selenium ide,创建一个项目
  • 点击REC录制脚本,输入要录制的网站地址,点击开始录制即可
  • 录制完成如下,selenium ide个人觉得没有功能非常一般low的很

二、编写测试脚本

1.定浏览器驱动,打开浏览器

1.1 IE

  • System.setProperty(“webdriver.ie.driver”, “C:\…\IEDriverServer.exe”);
  • WebDriver driver = new InternetExplorerDriver();
  • Java GUI自动化 java实现自动化测试_Java


  • 运行代码,成功打开IE浏览器
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_02


1.2 Firefox

  • 需事先安装对应驱动版本的浏览器
  • System.setProperty(“webdriver.gecko.driver”, “C:/…/geckodriver.exe”);
  • System.setProperty(“webdriver.firefox.bin”,“E:/Mozilla Firefox/firefox.exe”);
  • WebDriver driver = new FirefoxDriver();
  • Java GUI自动化 java实现自动化测试_Java_03


  • 运行代码,成功打开FireFox浏览器
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_04


1.3 Google

  • System.setProperty(“webdriver.chrome.driver”, “C:\…\chromedriver.exe”);
  • WebDriver driver = new ChromeDriver();
  • Java GUI自动化 java实现自动化测试_Java+Selenium_05


2.关闭浏览器窗口

  • driver.close();
    ✔     关闭页面

  • driver.quit();
    ✔     关闭页面
    ✔     关闭相关进程

  • 使用close方法能关闭浏览器,但是进程却无法结束掉
  • Java GUI自动化 java实现自动化测试_Java+Selenium_06

  • 使用quit方法,则可以结束掉进程
  • Java GUI自动化 java实现自动化测试_Java自动化测试_07

3.设置等待时间

  • 操作太快容易导致对象控件不出现,从而失败。

  • 隐式等待
    ✔     driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
           ★     隐式等待采用全部设置,所有的 findElement 方法都会隐式等待 1s
           ★     上述方法针对执行脚本的所有对象,等待 3 秒。
  • Java GUI自动化 java实现自动化测试_Selenium_08

  • Thread.sleep(3000);//ms
    ✔     只需放在需要等待的位置
  • Java GUI自动化 java实现自动化测试_Java_09

4.打开网址

说明: 为了方便测试,这里需要搭建一个webtours的案例网站,博主在自动化接口实战(一)文章有过详细搭建,这里博主再演示一遍,也是给自己加深印象

  • 安装网站所需的环境perl
  • Java GUI自动化 java实现自动化测试_Java_10


  • 启动服务器,点击批处理或者xigui32.exe都可以
  • Java GUI自动化 java实现自动化测试_Java自动化测试_11


  • 输入http://localhost:1080/webtours/则可以访问网站了
  • Java GUI自动化 java实现自动化测试_Java_12


  • 注册账号,即可登录,注册的用户数据不是保存到数据库,而是保存到文件中的
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_13


  • driver.get(“http://localhost:1080/webtours”);
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_14


  • driver.getTitle()
    ✔     获得浏览器网页标题(字符串)
  • Java GUI自动化 java实现自动化测试_Selenium_15


5.识别页面元素

5.1 driver.findElement(By.属性)

说明1: 搭建一个嵌套框架页面如下,最外面的为index页面,里面嵌套三个页面

Java GUI自动化 java实现自动化测试_Java自动化测试_16


说明2: 将test目录放在C:\WebTours\MercuryWebTours目录下,那么就相当于搭建了一个网站,跟webtours一样开启xigui服务器即可访问

Java GUI自动化 java实现自动化测试_Java GUI自动化_17

  • 查询符合属性要求的第一个对象。
  • 适用于文本框、密码框、命令按钮、单选按钮。
  • 属性
    ✔     name(“值”)
    ✔     tagName(“标签名”)
           ★     标签即<>内的关键字。
    ✔     xpath("//标记名[@属性名=‘属性值’]")
    ✔     id
    ✔     className
           ★     CSS class 属性的值
    ✔     linkText
           ★     <a href>和</a>之间的内容
    ✔     partialLinkText
           ★     <a href>和</a>之间的部分文本值

5.2 driver.findElements(By.属性).get(下标)

  • 查询符合属性要求的所有对象;
  • 适用于单选按钮、复选框、链接等。
  • 使用 get(下标)可以选择某个,从 0 开始。

6.操作页面元素的方法

6.1 文本框+密码框+多行文本框

  • sendKeys(“数据”)

  • clear()
    ✔     清空

  • getAttribute(“属性名”)
    ✔     获取对应属性的属性值,如 value

  • getText()
    ✔     获取文本值
    ✔     可能获得不到数据

  • 定位用户名输入框,发送数据
  • Java GUI自动化 java实现自动化测试_Java+Selenium_18

  • 运行脚本,成功的定位用户名输入框并发送指定数据到输入框
  • Java GUI自动化 java实现自动化测试_Java+Selenium_19

  • 清空用户名输入框数据,然后再输入新的数据
  • Java GUI自动化 java实现自动化测试_Java自动化测试_20

  • 通过getAttribute方法获取属性值
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_21

  • 通过getText方法获取文本值,结果显示没有获取到,因为这个方法时灵时不灵,所以可以优先使用getAttribute方法进行获取
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_22

6.2 单选按钮+复选框

  • click()
    ✔     单击/选中

  • isSelected()
    ✔     是否选中

  • 检查页面中单选按钮元素信息
  • Java GUI自动化 java实现自动化测试_Java自动化测试_23

  • 在点击选中性别男之前打印是否选中性别(默认单选按钮为第一个,所以是男的而不是女的),选中之后再次打印是否选中性别,最后打印出获取的属性值
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_24

  • 如果要选择第二个单选按钮女而不是默认选择的第一个男,那么则需要通过目录5.2查找所有的元素,并通过下标获定位到女这个单选按钮
  • Java GUI自动化 java实现自动化测试_Selenium_25

  • 定位复选框,并选择第1个和第三个,如果取消选择的复选框,则再进行点击此复选框即可
  • Java GUI自动化 java实现自动化测试_Java_26

6.3 下拉列表

  • new Select(driver.findElement(By.name(“select 控件名”))).

  • selectByIndex(下标)
    ✔     根据下标选择某项,从 0 开始

  • selectByVisibleText(“数据”)
    ✔     根据列表框中显示的文本选择某项

  • selectByValue(“值”)
    ✔     根据值选择某项

  • 选择下拉列表中的第三个元素,并打印其value值
  • Java GUI自动化 java实现自动化测试_Selenium_27

  • 除了通过selectByIndex选择下标,还可以通过selectByValue以及selectByVisibleText来选择下拉列表中的元素
  • Java GUI自动化 java实现自动化测试_Java_28

6.4 链接+命令按钮

  • click()
    ✔     单击

  • 在login页面中存在top及左边两个超链接,如下所示
  • Java GUI自动化 java实现自动化测试_Java自动化测试_29

  • 现在则通过linkText以及partialLinkText方法来定位到以上两个超链接文本,其中partialLinkText方法是匹配其中某个链接文本字段,不需要写全
  • Java GUI自动化 java实现自动化测试_Selenium_30


  • Java GUI自动化 java实现自动化测试_Java+Selenium_31

  • 定位登录按钮元素,进行点击操作
  • Java GUI自动化 java实现自动化测试_Java自动化测试_32

6.5 通过TagName和xpath识别控件

  • 首先检查login页面元素,一共存在8个input标签
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_33


  • 那么通过TagName匹配页面中的input标签,则需要使用findElements方法,因为结果不是一个,如果使用findElement方法,则默认定位到第一个input标签元素,博主这里通过循环遍历匹配的input标签的元素列表长度,来对用户名密码的input标签进行数据的发送
  • Java GUI自动化 java实现自动化测试_Java自动化测试_34


  • 打印出login页面中所有的文本数据,即匹配TagName标签为body整个页面数据
  • Java GUI自动化 java实现自动化测试_Java_35


  • 通过xpath匹配性别单选按钮中value为0的选项也就是女
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_36


6.6 通过id和ClassName识别控件

  • 通过id定位用户名输入框并发送数据
  • Java GUI自动化 java实现自动化测试_Java+Selenium_37


  • 在login页面中存在两个classname值为text的控件
  • Java GUI自动化 java实现自动化测试_Java GUI自动化_38


  • 所以博主这使用findElements来匹配获取所有,然后对用户名进行输入数据对登录按钮进行打印value值
  • Java GUI自动化 java实现自动化测试_Java_39