写在前面
勤奋跟吃苦不一样,假如你对工作,生活不满意。就要跳出圈子,接触其它人或事物,提升自己。从而换个工作,或者换了心态看待问题。而不是,吃苦的加班逼着自己去内卷,卷来卷去觉得吃苦受累,最终什么也没获得。躺平只是心态,不是听天由命。
——不吃葱的阿冬
🍟问题一 什么是自动化测试?
🍔问题二 什么是Selenium以及Selenium工作原理?
🥪问题三 Selenium环境如何搭建?
🍞问题四 Selenium API
目录
写在前面
一、概念
1.Selenium IDE
2.Webdriver
3.Selenium Grid
二、环境部署
三、八大元素定位
1.为什么要使用元素定位
2.如何定位
3.定位元素依赖于什么
3.1 id定位
3.2通过name定位
3.3 通过tag name和class name定位
3.4通过xpath和css selector
一、概念
自动化测试就是将人工要做的测试工作交给代码去执行,主要是为了提高测试效率,提高测试产品的质量。
Selenium是一个做web/UI自动化测试的工具
现在主流的测试工具:
①:QTP:收费 支持(支持web、桌面软件自动化)
②: selenium:免费,开源 只支持web项目
③:Robot frameword: 基于Python扩展关键字驱动自动化工具自动化测试主要包括:单元测试,UI测试和接口测试
Selenium的特点:
1)免费,可以查看源码
2)Selenium支持各大浏览器
3)跨平台(在Linux,windows,Mac上都可以)
4)有丰富的API
最早期的seleniumRC已经被现在的webDriver所替代,可以理解为selenium1.0+webdriver构成了现在的Selenium2.0。
我们日常所说的Selenium就是Selenium2.0,它是由Selenium IDE,Webdriver,Selenium Grid组成。
1.Selenium IDE
Selenium IDE是一个用于selenium测试的完整集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。调试过程中可以逐步进行或者调整执行的速度,并且可以在底部浏览日志出错误信息,录制的脚本可以用多种语言导出。
2.Webdriver
Selenium RC 在浏览器中运行JavaScript应用会存在环境沙箱问题,但是Webdriver可以跳出JavaScript的沙箱,针对不同浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java C# Python 等)绑定来驱动浏览器对web元素进行操作和验证。
Webdriver的工作原理:
①:启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动浏览则作为webdriver的remote server。
②:客户端(测试脚本),借助ComandExecutor发送HTTP请求给sever端
③:Sever端需要依赖原生的浏览器组件,转化web service的命令为浏览器native的调用来完成操作。
3.Selenium Grid
其实就是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器上执行不同的测试脚本。
二、环境部署
这里使用的是chrome+Java
chrome 下载地址:Google Chrome - 快速安全的网络浏览器,专为您而打造
chromedriver 下载地址:ChromeDriver - WebDriver for Chrome - Downloads
!!! 两者的版本需要一致
配置系统环境变量:找到chrome的位置,将刚下好的chromedriver驱动放到这个位置
然后复制地址,后面用
找到高级系统变量-->Path
添加pom.xml依赖
<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>
能打开浏览器就说明运行成功:
package org.example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
test1();
}
public static void test1() {
//创建驱动
WebDriver webDriver = new ChromeDriver();
//打开百度
webDriver.get("https://www.baidu.com");
}
}
三、八大元素定位
1.为什么要使用元素定位
因为真正项目中计算机无法找到具体位置,所以需要元素定位来指定计算机所定位的元素来进行操作。
2.如何定位
启动驱动之后 在网页中按下F12或者右击鼠标“检查”,然后点击“元素”
3.定位元素依赖于什么
定位元素依赖于各个层级、标签名、属性、路径
主要有这么几个
①id ②name ③class name ④link text ⑤partial link text ⑥tag name ⑦xpath ⑧css selector
最重要的也是最常用的定位也就三个:css、xpath、标签定位也就是⑥⑦⑧
3.1 id定位
id是页面元素的属性,但是不是所以的元素都有id。如果一个元素有id属性,那么一般在整个页面是唯一的。外面一般可以用id来定位到这个唯一的属性:
//通过id定位
private static void test01() {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.baidu.com");
webDriver.findElement(By.id("kw")).sendKeys("java");
}
3.2通过name定位
如果这个项目中有name且name是项目中唯一的,那么就可以使用name定位。
//2.name定位
private static void test02() {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.baidu.com");
webDriver.findElement(By.name("wd")).sendKeys("java");
}
3.3 通过tag name和class name定位
3.4通过xpath和css selector
不经常用的就不列出来了
如果需要在浏览器中查询,按 f12 再按ctrl +f 然后直接输入上述定位元素中的内容就行