Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现人为的错误,也比较费时间。因此,将这些任务自动化,就可以消除人为因素。Selenium 可以帮助我们自动化完成验收测试,通过构建更严格的测试,从而使软件更为可靠也更易于维护。

Selenium 支持 Web 浏览器的自动化,它提供一套测试函数,用于支持 Web 自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较等功能。支持多种浏览器、多种编程语言(Java、C#、Python、Ruby、PHP 等)、支持多种操作系统(Windows、Linux、IOS、Android 等)、开源免费。它主要由三个工具组成:WebDriver、IDE、Grid。

Selenium架构

1080×456 85 KB

在客户端(client)完成 Selenium 脚本编写,将脚本传送给 Selenium 服务器,Selenium 服务器使用浏览器驱动(driver)与浏览器(browser)进行交互。

Selenium核心组件

  • WebDriver 使用浏览器提供的 api 来控制浏览器,就像用户在操作浏览器,不具有侵入性。

  • IDE 是 Chrome 和 Firefox 扩展插件,可以录制用户在浏览器中的操作。

  • Grid 用于 Selenium 分布式,你可以在多个浏览器和操作系统运行测试用例。

环境准备

Python 自带的 pip 工具安装

  • Python 版本
pip install selenium

  • Java 版本
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.14.0</version>
</dependency>
  • Python 版本

安装 Selenium 的前提是拥有 Python 开发环境(推荐使用 PyCharm):

Selenium 是 Python 的第三方库,可采用 PyCharm 自带方式安装。

菜单栏 File → Settings 进入配置界面:

896×697 32.7 KB

搜索 Selenium → Install Package:

1080×400 66.9 KB

Selenium 支持多种浏览器,需要下载对应的浏览器版本的驱动,将浏览器驱动位置设置到环境变量。

各个浏览器驱动下载地址:chromedriver下载地址与webview自动化关键代码 1

在 Python 文件中编写代码,如果程序能够调起相应浏览器,说明安装成功。

  • Java 版本

当使用 Maven 或 Gradle 等构建工具时,会自动加载依赖项。

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>4.0.0</version>
</dependency>

实战演示

#导入 Selenium 包
from selenium import webdriver #创建一个 Chromdriver 的实例,Chrome()会从环境变量中寻找浏览器驱动
driver = webdriver.Chrome()
# 打开 IE 浏览器
# driver = webdriver.Ie()
# 打开 Firefox 浏览器
# driver = webdriver.Firefox()
//导入 Selenium 包
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class AiceTest {
public static void main(String[] args) throws InterruptedException {
//创建一个 Chromdriver 的实例
WebDriver driver = new ChromeDriver(); }
}

这段代码运行后会自动化的创建一个 Chrome 进程。

最新文章

  1. 使用java代码关闭指定端口的程序-windows
  2. 浅谈 underscore 内部方法 group 的设计原理
  3. ecshop lang用法
  4. MySql之on duplicate key update详解
  5. C#中字符串驻留技术
  6. bzoj 1038 [ZJOI2008]瞭望塔(半平面交)
  7. Struct标签
  8. C# 邮件发送注意事项
  9. cobbler批量安装操作
  10. JAVA字符串
  11. 如何像Python高手(Pythonista)一样编程
  12. WC前的小计划
  13. java mysql的latin1转UTF-8
  14. Apache2.4反向代理设置
  15. Linux学习 : 移植qt 5.6.3 及 tslib 1.4
  16. 省市区三级联动[JSON+Jquery]
  17. [转]C# 测试网络连接
  18. CentOS虚拟机不能联网状况下yum方式从本地安装软件包
  19. ⑦ 设计模式的艺术-13.代理(Proxy)模式
  20. 巧用hover改变css样式和背景

热门文章

  1. CF1479X Codeforces Round #700
  2. python编程笔记--字符编码
  3. Unity-2D
  4. Spring基于xml注入bean的几种方式?
  5. Numpy的数学统计函数
  6. 分压杯频LLC变换器
  7. canvas系列教程07-canvas动画基础1
  8. java中什么是Interface接口, 请给个实例!
  9. 解决 Tomcat 控制台输出乱码(Tomcat Localhost Log / Tomcat Catalina Log 乱码)
  10. react和react-dom是什么?