一、⾃动化分类
讲⾃动化分类的⽬的是避免同学们将⾃动化混淆,同时避免讲不同的⾃动化如何实施造成的课时
压⼒
很多同学经常听到⾃动化这个词,但是很容易误以为⾃动化就是⼀个东西,⾃动化是个统称,同
学们可以理解为我们常说的吃⽠这样的表达⽅式和⾃动化是⼀样的,吃⽠可以是吃西⽠,吃哈密
⽠,吃⾹⽠,⾃动化也包含多种,如接⼝⾃动化,web⾃动化,移动端⾃动化等等...
1.接⼝⾃动化
什么是接⼝⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
2.UI⾃动化
UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、移动端⾃动化测试等等。
3.移动端⾃动化测试
什么是移动端⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
移动端,顾名思义,就是部署在⼿机上的应⽤程序。移动端⾃动化测试主要测试程序部署在⼿机上能否按照预期的结果的进⾏操作。
移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测试脚本代码对模拟器上的软件进⾏操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多,诸如什么呢????
通常来说我们手动用百度搜索当中,wed自动化可以帮助自己执行搜索计划。
4.⾃动化测试⾦字塔
理想的⾃动化测试⾦字塔表达了⾃动化测试的理想情况,利⽤较少的时间和精⼒在单元测试上就能够发现更多有效的问题。
然后实际上在企业中,⾃动化往往是“冰淇淋蛋筒反模式”
二、web⾃动化测试
2.1驱动
上⾯给⼤家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界⾯进⾏⼀系列的操作。对于⼿⼯测试来说,这⼀系列的操作都需要测试⼈员⼿动的,⼀步⼀步的来执⾏测试。那么对于⾃动化程序来说,程序如何才能打开浏览器并执⾏我们预期的操作流程呢?
驱动⼀词应⽤⼴泛,同学们都不会陌⽣。
⻋有了驱动才能够让⻋跑起来。
程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化⽅式驱动浏览
器。
驱动管理:
WebDriverManager是⼀个开源Java库,以完全⾃动化的⽅式对Selenium WebDriver所需的驱动程
序(如chromedriver、geckodriver、msedgedriver等)进⾏管理(即下载、设置和维护),⾃版
本5起,WebDriverManager还提供了其他相关功能,如发现本地系统中安装的浏览器的能⼒,构建WebDriver对象(如ChromeDriver、FirefoxDriver、EdgeDriver等)
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.8.0</version> <scope>test</scope> </dependency>三、Selenium
3.1⼀个简单的web⾃动化⽰例
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.0.0</version> </dependency>2)使⽤selenium编写代码
public void example_test() { //驱动程序管理的⾃动化 WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); //允许访问所有链接 options.addArguments("--remote-allow-origins=*"); //1、打开浏览器 WebDriver driver = new ChromeDriver(options); //2.输⼊百度⽹址:https://www.baidu.com driver.get("https://www.baidu.com"); //3、找到输⼊框并输⼊“迪丽热巴” driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪丽热巴"); //4、找到“百度⼀下”按钮并点击 driver.findElement(By.xpath("//*[@id=\"su\"]")).click(); //5、关闭浏览器 driver.quit(); }3.2selenium+驱动+浏览器的⼯作原理
1.通过selenium编写的⾃动化脚本代码中在ChromeDriverService中创建⼀个服务
2.通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,PORT为
ChromeDriverService中创建的端⼝号,该服务地址为selenium向webdriver发送请求的服务地
址。
3.向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
4.打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过创建好的服务链接到
webdriver,然后使⽤execute发送请求
5.驱动收到请求并对请求进⾏解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执⾏对应动作
6.浏览器再把执⾏的动作结果通过浏览器驱动程序返回给测试脚本