Java自动化测试(selenium 22)
selenium IDE
selenium IDE是一个Firefox/Chrome插件,用于记录和回放用户与浏览器的交互。使用它来创建简单的脚本或协助进行探索性测试。
下载selenium IDE
下载地址:https://www.selenium.dev/downloads/
官网
![chrome商店](/Users/zhongxin/Library/Application Support/typora-user-images/image-20200827064316043.png)
开始使用-录制
- 打开Selenium IDE插件
selenium IDE
- 点击
Record a new test in a new project
- 项目名称设置为
web-test
(任意)
项目名称
- 测试页面选择
https://www.baidu.com
测试页面
- 点击
Start Recording
自动打开页面。右下角有Selenium IDE is recording …
录制中的标记
截屏2020-08-27 上午6.51.17
6.在该页面上操作后再次点击插件停止录制
停止录制
从图中可以看到,总共操作了7步
- 打开浏览器
- 设置浏览器大小
- 点击输入框
- 输入
python
- 点击搜索按钮
- 点击搜索结果的第一行
- 进入新的弹出页面
测试步骤
开始使用-执行
点击播放按钮进行回放
点击播放速度,降低播放速度,防止出现因为操作过快导致的元素无法找到的问题。
执行
java selenium环境搭建
chrom浏览器下载
https://www.chromedownloads.net/chrome64win/
Firefox浏览器下载
http://ftp.mozilla.org/pub/firefox/releases/
Maven
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/3.141.59
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
驱动
IE
使用 IE 浏览器进行 Web 自动化测试,selenium-java.jar 包和 IE 驱动是同步的(如下图),所以只需要关注 IE 驱动和 IE 浏览器版本如何搭配。
如果你使用 ie6、ie7 请使用 selenium 2.42 或者 2.40 版本,也就是图中的版本。如果你使用的 ie8-ie11 推荐使用 2.50 之后的版本。
镜像地址:https://npm.taobao.org/mirrors/selenium/
下载
Chrome
使用 Chrome 浏览器进行 Web 自动化测试,selenium-java.jar 是通用的,只需要关注 Chrome 驱动和 Chrome 浏览器版本是否对应即可。在 70.0.3538.16 之后,Chrome 驱动和 Chrome 浏览器是一一对应。之前的版本会有一个 notes.txt 进行描述(如下图)。
镜像地址:https://npm.taobao.org/mirrors/chromedriver/
Firefox
使用 Firefox 浏览器进行 Web 自动化测试,相对于 IE 和 Chrome 更复杂一些。需要 selenium-java.jar、Firefox 驱动、Firefox 浏览器都匹配。这个匹配关系在 GitHub 上 Firefox 驱动项目 releases 中(如下图)。
地址:https://github.com/mozilla/geckodriver/releases
对应关系
测试Demo-IE
将Driver放到resources
package com.zhongxin.day01;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class WebDemo {
public static void main(String[] args) throws InterruptedException {
// 设置ie启动项
DesiredCapabilities capabilities = new DesiredCapabilities();
// 忽略缩放
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
// 忽略保护模式
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
// 设置初始化浏览器地址
capabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "https://www.baidu.com");
// 配置ie驱动位置
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
// 创建ie驱动对象
InternetExplorerDriver driver = new InternetExplorerDriver();
// 打开百度
driver.get("https://www.baidu.com");
// 停留3秒
Thread.sleep(3000);
// 关闭驱动
driver.quit();
}
}
测试Demo-Chrome
private static void chrome() throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver");
ChromeDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
Thread.sleep(3000);
driver.quit();
}
测试Demo-Firefox
private static void firefox() throws InterruptedException {
System.setProperty("webdriver.firefox.bin", "D:\Mozilla Firefox\firefox.exe");
System.setProperty("webdriver.firefox.driver", "src/test/resources/geckodriver.exe");
FirefoxDriver driver = new FirefoxDriver();
driver.get("https://www.baidu.com");
Thread.sleep(3000);
driver.quit();
}
提取
package com.zhongxin.day01;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class WebDemo {
public static void main(String[] args) throws InterruptedException {
String type = "chrome";
WebDriver driver = null;
if ("chrome".equalsIgnoreCase(type)) {
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver");
driver = new ChromeDriver();
} else if ("ie".equalsIgnoreCase(type)) {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
capabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "https://www.baidu.com");
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
driver = new InternetExplorerDriver();
} else if ("firefox".equalsIgnoreCase(type)) {
System.setProperty("webdriver.firefox.bin", "D:\Mozilla Firefox\firefox.exe");
System.setProperty("webdriver.firefox.driver", "src/test/resources/geckodriver.exe");
driver = new FirefoxDriver();
}
driver.get("https://www.baidu.com");
Thread.sleep(3000);
driver.quit();
}
}
- SpringBoot开发案例之微信小程序文件上传
- SpringBoot开发案例之配置静态资源文件路径
- 源码解读ODL的MAC地址学习(一)
- SpringBoot开发案例之配置Druid数据库连接池
- SpringBoot开发案例之mail中文附件乱码
- SpringBoot开发案例之整合Swagger篇
- SpringBoot开发案例之整合mail队列进阶篇
- SpringBoot开发案例之集成SSL证书
- SpringBoot开发案例之整合mail队列篇
- SpringBoot开发案例之整合日志管理
- SpringBoot开发案例之奇技淫巧
- SpringBoot开发案例之整合Spring-data-jpa
- SpringBoot开发案例之整合定时任务(Scheduled)
- SpringBoot开发案例之整合mail发送服务
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- TypeScript 4.1 新特性:字符串模板类型,Vuex 终于有救了?
- TS 4.1 新特性实现 Vuex 无限层级命名空间的 dispatch 类型推断。
- egg.js踩坑记录(一)开始篇
- VUI创建日志(二)——防抖节流组件的实现
- 为你的VuePress博客添加GitTalk评论
- Go 中 Set 的实现方式
- Go 译文之词法分析与解析 Part Three
- React-Native踩坑记
- 【译】成为优秀程序员(和人类)的101个技巧
- 谈谈ES6语法(汇总中篇)
- 谈谈ES6语法(汇总下篇)
- [译] JS 中 service workers 的简介
- 【译】如何大大简化你的Vuex Store
- 挑选 npm 模块很费事?掌握这些技巧就能事半功倍!
- 【译】前端 VS 后端