一、Selenium IDE
1. Selenium IDE介绍
Selenium IDE 是一个Firefox/Chrome插件,用于记录和回放用户与浏览器的交互,使用它来创建简单的脚本和协助进行探索性测试。
2. Selenium IDE安装:
下载地址:
https://www.selenium.dev/downloads/
安装:
Firefox浏览器可直接添加组件
Chrome 需要翻墙才可以安装,也可离线安装
下载: 链接:https://pan.baidu.com/s/1ebXSs712ivGJ3lYGEfHNIw
提取码:8888
下载后,解压 --- 进入浏览器扩展程序-----------加载已解压的扩展程序-----选择之前解压的文件夹 即可
3. Selenium局限性
-
只能支持Firefox/Chrome浏览器
- 录制的脚本稳定性不够
- 线性脚本,无法处理复杂的逻辑
二 、 Selenium Webdriver
1. 介绍
用于Web应用程序测试工具,Selenium时开源并且免费的,Selenium测试直接在浏览器中运行,课模拟真实用户操作进行IE,Chrome,Firefox,Safari等主流浏览器,通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性,支持多种语言,如:python,java等
2. selenium 发展历程
Selenium 1.0 :
Selenium IDE: chrome/firefox浏览器插件,录制和回放用例
Selenium Grid : 分布式自动化工具,可以在多个测试环境并发的方式执行测试脚本,缩短测试时间
Selenium RC : 通过JavasScript简介驱动浏览器进行测试
不能处理键盘和鼠标事件
不支持处理弹出框、对话框等事件
速度和稳定性不够
Selenium 2.0 :
Selenium 1.0 + Webdriver
Webdriver : 利用浏览器原剩API,封装以套同意的Webdriver API
直接操作浏览器本身,速度会更快
不同的浏览器厂商提供驱动实现chromeDriver、geckodriver
驱动启动是基于Webdriver JSON Wire协议的web服务
Selenium 3.0
去除了Selenium RC
最低版本JAVA1.8
支持Microsoft Edge 和MacOS safari浏览器
FireFox驱动不再内置,需要使用Firefox官方提供的geckodriver
3. Selenium 3大组件:
Selenium IDE: 扩展插件,支持用户录制&回放
Selenium Webdriver:提供了各种语言环境的API来支持更多控制权和编写符合标准软件实践的应用程序
Selenium Grid: 分布式自动化工具,可以在多个环境中并发的方式执行测试脚本,实现测试脚本的并发执行缩短测试时间
4. selenium Webdriver原理
驱动程序:
浏览器 驱动程序 驱动下载地址
Chrome -----> chromeDriver http://chromedriver.storage.googleapis.com/index.html
或者:http://npm.taobao.org/mirrors/chromedriver/
Firefox ------> geckodriver https://github.com/mozilla/geckodriver/releases/
或者: http://npm.taobao.org/mirrors/geckodriver/
IE -------> IEDriverServerxxx.zip http://selenium-release.storage.googleapis.com/index.html
等等
三 、 环境搭建(语言Java):
1. 创建Maven项目
2. 引入selenium 依赖
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
3. 浏览器驱动安装
1) 在未安装前, 写一个简单的程序:Chrome打开百度
package com.lujier.demo;
import org.openqa.selenium.chrome.ChromeDriver;
public class OpenChrome {
public static void main(String[] args) {
// 1. 打开测试浏览器- chrome
// 2.在浏览器地址栏输入网站:https://www.baidu.com
ChromeDriver driver=new ChromeDriver();
driver.get("https://www.baidu.com");
driver.close();
}
}
代码运行结果如下(需要将驱动存放在环境变量中):
Chrome驱动下载地址上文已提到
浏览器历史版本下载:http://www.chromedownloads.net/chrome64win
下载与浏览器版本对应的驱动:
确定Chrome浏览器版本: chrome://version查看版本,假设是:80.0.3987.162
下载驱动:
下载之后 :
解压文件之后,在文件夹中有一个chromedriver.exe文件,将该文件放到Maven项目src/test/resouces目录下
注意: 源于浏览器默认有新版本时会自动更新,所以学习阶段,建议可以先禁止更新,如何禁止,自行了解
完成上述步骤之后,还需要将驱动路径添加到环境变量中,代码如下(可对比上述):
public class OpenChrome {
public static void main(String[] args) {
// 添加驱动路径到环境变量
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
// 1. 打开测试浏览器- chrome
// 2.在浏览器地址栏输入网站:https://www.baidu.com
ChromeDriver driver=new ChromeDriver();
driver.get("https://www.baidu.com");
driver.close();
}
}
2) Firefox 建议浏览器版本是(稳定): V56
历史版本Firefox:https://ftp.mozilla.org/pub/firefox/releases/
未安装驱动前,先访问百度
public class OpenChrome {
public static void main(String[] args) {
// 二、 打开Firefox浏览器
FirefoxDriver driver1 = new FirefoxDriver();
driver1.get("https://www.baidu.com");
driver1.close()
}
}
错误截图(未下载驱动,或者驱动环境变量并未配置):
驱动下载之后:
selenium3.0版本之后,firefox要求48版本以上
a.解压后,将解压后的文件内的geckodriver文件放到Maven项目src/test/resouces目录
b. 代码中设置环境,代码如下:
package com.lujier.demo;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class OpenChrome {
public static void main(String[] args) {
// 二、 打开Firefox浏览器
System.setProperty("webdriver.firefox.bin", "D:\\APP_Installs\\Other\\Mozilla Firefox\\firefox.exe"); // 非默认路径无法检索,故需设置
System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe"); // 驱动路径
FirefoxDriver driver1 = new FirefoxDriver();
driver1.get("https://www.baidu.com");
driver1.findElementById("kw").sendKeys("腾讯课堂");
driver1.findElementById("su").click();
driver1.close();
}
}
此时,再次运行代码时就没有异常了
注: 其他浏览器,如IE,都类似流程配置
四、 web自动化环境准备(Python)
步骤类似Java语言自动化时的步骤(在这里以Chrome为例)
1. 查看浏览器版本
2. 下载对应浏览器的对应版本的驱动
3. 驱动环境准备:3 种方式
1). 驱动存放路径设置环境变量: sys.path.append(驱动地址)
2) 存放在当前已配置环境变量的目录下即可,比如python/java安装路径下
3) 代码中,将路径作为参数传递