测试|Selenium介绍及环境搭建
1.Selenium是什么
Selenium是用来做web网站 UI自动化的测试工具/测试框架。
我们这里说的Selenium是Selenium2.0,它由Selenium IDE,Webdriver,
Selenium Grid组成。
Selenium IDE是用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能够回访,编辑和调试测试脚本。测试过程中可以逐步进行或调整执行速度,并且在底部浏览日志出错信息。
Webdriver可以跳出JS的环境沙箱,针对不同的浏览器创建更加健壮的分布式的跨平台的自动化测试脚本,基于特定语言(Java,python,js…)绑定驱动浏览器对web元素进行操作和验证。
Webdriver的工作原理:
- 启动浏览器后,selenium会把目标浏览器绑定到特定的端口,启动后的浏览器作为webdriver的远程服务器。
- 客户端,这里就是测试脚本,借助ComandExcutor发送http请求给server端,会以webdriver协议规定的json格式字符串告诉selenium我们希望浏览器接下来做什么
- 服务器端需要依赖原生的浏览器组件,转化web service命令为浏览器native调用来完成操作。
selenium grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息,可以实现同一时刻执行不同的测试脚本。
关于脚本和脚本语言,脚本语言和面向对象语言:
脚本script 其实就是短小的、用来让计算机自动化完成一系列工作的程序,类似演戏时用到的剧本。
脚本一般会用脚本语言进行书写,其中常见的脚本语言有python,js。
常见用途就是用来书写自动化测试脚本,在公司肯呢个会用脚本来自动检查平台代码部署异常情况,拉去异常情况警报,备份文件,批量处理日志等。
前端大部分语言都可以认为是脚本语言,因为他们主要用于网页上执行动态操作和交互,脚本语言是一种通过解释器逐行解释执行的编程语言。但并非所有比如TypeScript,前端框架Vue等
后端语言脚本语言包括PHP,Python,JS等。
脚本语言和面向对象语言是两种不同的编程范式,脚本语言是一种解释型语言,面向对象语言是一种编译型语言,脚本语言语法更灵活,数据结构和抽象方式更灵活,但是执行效率相对较低
关于沙箱:
环境沙箱是一种安全机制,用于隔离和限制应用程序或代码的执行环境,减少对系统的潜在危害。
限制资源访问,隔离环境,控制权限,检测和记录。
环境沙箱主要应用与不可信任的代码执行环境,比如网络浏览器,插件等,可以帮助保护用户隐私和安全,减少恶意代码的风险,并提供更安全的应用程序运行环境。
2.Selenium特点
- 支持各种浏览器,只需要下载对应的浏览器驱动即可
- 支持各种语言(python,Java,JS…)
- 支持各种平台
- 拥有丰富的API
3.Selenium原理
执行自动化脚本代码,就等于创建一个HTTP请求,webdriver浏览器接受请求并解析,并把解析后的结果发送给浏览器,操作浏览器执行测试步骤。
浏览器执行之后会把结果返回给httpserver,最后结果返回给脚本。
4.Selenium+Java环境搭建(使用chrome浏览器)
1.下载chrome浏览器,并查看chrome浏览器版本
2.下载chrome浏览器驱动,只需要前两个数相同即可。点击电脑对应的版本进行下载。chrome浏览器驱动
3.将压缩包解压,并放入java的文件夹下(已经给jdk配置过环境变量)
直接把exe放到java安装目录下
4.验证环境是否搭建成功
1.创建maven项目,向pom文件添加selenium依赖
<dependencies>
<!-- 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>
</dependencies>
注:这里是selenium3不是4
2.编写代码运行
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.baidu.com");
}
}
看到下边两个效果即环境搭建完成
其中这里的启动端口是不确定的
常见问题及解决办法:
1.浏览器版本与驱动版本问题
原因:浏览器版本与驱动版本不匹配,重新在官网下载对应版本
2.selenium找不到Chrome.exe的安装路径
解决办法:检查chrome浏览器是否默认安装在C盘。若不在,则使用绝对路径。
ChromeDriver driver = new ChromeDriver("xxxxx);
因为我是安装在c盘下,所以不需要写绝对路径。
3.环境变量未配置
解决办法:给jdk添加系统环境变量,并将驱动放入jdk的bin目录下