如何使用 Selenium 实现自动化操作?

本篇咱们来谈谈Selenium自动化脚本是如何工作的,以及如何实现一个简单的自动化示例;

一、关于Selenium

1.1、为什么选择它作为web自动化的测试工具?

选择Selenium作为web自动化测试工具的原因(面试也许会问):

1. 开源免费;

2. 支持多浏览器,如Chrome、 Firefox、IE浏览器等;

3. 支持多系统,如Linux、Windows、MacOS;

4. 支持多语言,如下:

5. Selenium包提供了很多可供测试使用的API;

1.2、Selenium操作浏览器的原理

首先来了解一下不可不知的“驱动”:

什么是驱动?例如,计算机有了驱动,才可以使计算机工作起来;人工测试的情况下,我们用鼠标打开浏览器,那么驱动就是人力;对于自动化来说,代码不能直接打开浏览器,而是需要借助驱动才能打开浏览器;

那么,来看一下Selenium编写的自动化脚本是如何打开浏览器的:

从上图可以看的出来,驱动要接受 selenium 脚本发送来的 http 请求,并解析请求,实际上就可以把这个驱动看成一个服务器,例如谷歌chromedriver,如下图:

注意:使用的浏览器驱动版本一定要和浏览器版本保持差不多一致;

二、实现一个简单的自动化

2.1、使用自动化操作浏览器

实现一个简单的自动化主要包含以下几个步骤

1. 创建驱动示例,创建会话(打开浏览器);

2. 访问网站;

3. 查找元素;

4. 操作元素;

5. 结束会话;

例如:通过谷歌浏览器进入

注意:需要先导入selenium相关依赖,并且将浏览器驱动下载完成,放入java/jdk/bin目录下;

  1. <dependencies>

  2. <dependency>

  3. <groupId>org.seleniumhq.selenium</groupId>

  4. <artifactId>selenium-java</artifactId>

  5. <version>4.0.0</version>

  6. </dependency>

  7. </dependencies>

由于自动化代码执行速度很快,所以可以在每执行一步用线程休眠停留一下(如果想观看到效果)

  1. import org.openqa.selenium.By;

  2. import org.openqa.selenium.chrome.ChromeDriver;

  3. public class FirstAutoTest {

  4. //百度网址搜索关键词“不孕不育”

  5. public void buyunbuyuTest() throws InterruptedException {

  6. //创建驱动示例,创建会话(打开浏览器)

  7. ChromeDriver driver = new ChromeDriver();

  8. Thread.sleep(3000);

  9. //在浏览器里输入百度网址,访问百度首页

  10. driver.get("https://www.baidu.com");

  11. Thread.sleep(3000);

  12. //找到百度首页输入框元素,并输入关键词“不孕不育”

  13. driver.findElement(By.cssSelector("#kw")).sendKeys("不孕不育");

  14. Thread.sleep(3000);

  15. //找到百度首页"百度一下"按钮,并点击

  16. driver.findElement(By.cssSelector("#su")).click();

  17. Thread.sleep(3000);

  18. //结束会话,关闭浏览器

  19. driver.quit();

  20. }

  21. }

2.2、Selenium常用的API

2.2.1、查找页面元素

使用方法:

indElement();

参数:

By类(通过什么方式来定位元素);

By类中最常用的两个定位方法:

1. cssSelector(),它可以通过css选择器来定位元素;

2. className(),它可以通过xpath来定位元素;

xpath如何使用呢?

最常用的是用层级的方式来表示:/子级 //跳级;(@为属性)

例如:谷歌浏览器中的Google标志

这样你就可以拿到这个标签的xpath://*[@id="logo"] 这便是跳级(前面的路径都不显示,直接表示属性id=“logo”这个标签)

或者是xpath://*[@id="csdn-copyright-footer"]/ul[1]/li[2]/a 这便是一个跳级加子集的方式;

值得注意的是:我们不要一个一个去推这个子集表示的方式,可以直接按照上图的方式进行拷贝xpath路径,配合着className()方法使用即可,但是有时候赋值selector或者xpath元素不一定是唯一的,需要我们进行手动修改到唯一,这就是为什么我们要对xpath的语法要有一定了解的原因;你学费了吗?

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值