Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla ,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
历史:
04年,诞生了Selenium Core,Selenium Core是基于浏览器并且采用JavaScript编程语言的测试工具,运行在浏览器的安全沙箱中,设计理念是将待测试产品、Selenium Core和测试脚本均部署到同一台服务器上来完成自动化测试的工作。
05年,Selenium RC诞生,就是selenium1 ,这个时候,Selenium Core其实是Selenium RC的核心。
Selenium RC包括两部分:一个是Selenium RC Server,一个是提供各种编程语言的客户端驱动来编写测试脚本
07年,Webdriver诞生,WebDriver的设计理念是将端到端测试与底层具体的测试工具分隔离,并采用设计模式Adapter适配器来达到目标。WebDriver的API组织更多的是面向对象。
08/09年,selenium2诞生,selenium2其实是selenium rc和webdriver的合并,合并的根本原因是相互补充各自的缺点
09年,selenium3诞生,这个版本剔除了selenium rc , 主要由 selenium webdriver和selenium Grid组成, 我们日常使用的其实就是selenium webdriver,至于selenium grid是一个分布式实现自动化测试的工具
原理:
selenium主要有selenium 1 和selenium 2,3 两个版本
selenium 1
通过selenium脚本调用selenium rc,selenium rc在浏览器中运行JavaScript应用,控制页面完成所需要的操作。
selenium 2
通过selenium脚本调用webdriver,webdriver调用浏览器api,控制页面完成所需要的操作。
比起1的优点:
webdriver有浏览器厂商自己提供,对浏览器的兼容性更好。webdriver提供避免JavaScript安全限制不能提供的操作。webdriver还操作系统级别应用,模拟输入操作等。
驱动下载:
官网,有些下载需要FQ:
https://www.seleniumhq.org/
各版本Chrome下载地址:
https://www.chromedownloads.net/chrome64win/
Selenium Chrome版本与chromedriver兼容版本对照表:
https://blog.csdn.net/yoyocat915/article/details/80580066
各版本ChromeDriver下载地址:
http://npm.taobao.org/mirrors/chromedriver/
firfox所有驱动:
https://github.com/mozilla/geckodriver/releases
注意:
需要三个版本对应:webdriver,浏览器,selenium
selenium引入:
通过jar包导入:
点击下方网址下载jar包
https://www.selenium.dev/downloads/
打开IntelliJ IDEA,导入.jar包。
点击菜单栏 File –> Project Structure 点击 Project Structure界面左侧 的“Modules” 。在“Dependencies” 标签界面下,点击右边绿色的“+” 号,选择第一个选项“JARs or directories…” ,选择相应的 jar 包,点“OK” ,jar包添加成功。
通过maven导入(推荐使用):
打开pom.xml 配置Selenium。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>WebAuto</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
</project>
Selenium工作过程总结
1.selenium client(Java等语言编写的自动化测试脚本)初始化一个service服务,通过Webdriver启动浏览器驱动程序。
2.通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id。
3.打开浏览器,绑定特定的端口,把启动后的浏览器作为webdriver的remote server。
3.打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过RemoteConnection链接到remote server,然后使用Http向remote server发送请求。
4.浏览器通过请求的内容执行对应动作。
5.浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。