当前位置:   article > 正文

自动化测试——selenium工具(web自动化测试)

web自动化测试

目录

1、自动化测试

2、自动化测试的分类

3、selenium(web自动化测试工具)

4、环境部署

5、selenium常用方法

5.1 查找页面元素

5.2 元素的定位 By类

5.3 输入文本、点击、提交

5.4 清除

5.5 获取文本、获取属性对应的值(注意区分)、获取页面的标题和URL

6、窗口

6.1 窗口的大小设置:最大化、最小化、全屏窗口、手动设置窗口大小

6.2 窗口的切换

6.3 屏幕截图

7、selenium基础方法

7.1 等待

7.2 浏览器导航

7.3 弹窗

7.4 选择框

7.5 执行脚本

7.6 文件上传

7.7 浏览器的参数设置


1、自动化测试

优点:通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率。

           也用于回归测试。随着版本越来越多,版本回归的压力越来越大,仅仅通过人工测试             来回归所以的版本肯定是不现实的,所以我们需要借助自动化测试。

2、自动化测试的分类

接口自动化测试

UI自动化测试(界面测试):

                      移动端自动化测试

                      web端自动化测试

3、selenium(web自动化测试工具)

  • 为什么选择selenium作为我们的web自动化测试工具?

答:1)开源免费

        2)支持多浏览器。如:Chrome、Firefox、IE浏览器等等

        3)支持多系统。如:Linux、Windows、MacOS.....

        4)支持多语言。如:Java、Python、CSharp、Ruby、JavaScript、Kotlin

        5)selenium包里提供了很多可供测试使用的API。

4、环境部署

使用selenium实施web自动化测试,需要的环境有:

  • Chrome浏览器
  • 谷歌驱动(ChromeDriver)
  • selenium工具包

一个简单的自动化代码示例:

首先导入selenium包:

  1. <dependency>
  2. <groupId>org.seleniumhq.selenium</groupId>
  3. <artifactId>selenium-java</artifactId>
  4. <version>4.0.0</version>
  5. </dependency>

简单自动化百度搜索蔡徐坤代码:

  1. public void caixukunTest() throws InterruptedException {
  2. //打开浏览器
  3. ChromeDriver driver = new ChromeDriver();
  4. Thread.sleep(2000);
  5. //在浏览器输入百度网址,访问百度网页
  6. driver.get("https://www.baidu.com");
  7. Thread.sleep(2000);
  8. //找到百度首页的输入框元素,输入关键词 蔡徐坤
  9. driver.findElement(By.cssSelector("#kw")).sendKeys("蔡徐坤");
  10. Thread.sleep(2000);
  11. //找到百度首页”百度一下“按钮,并点击
  12. driver.findElement(By.cssSelector("#su")).click();
  13. Thread.sleep(2000);
  14. //结束会话(关闭浏览器)
  15. driver.quit();
  16. }

简单自动化实例的五个主要步骤:

  • 创建驱动实例,创建会话
  • 访问网站
  • 查找元素
  • 操作元素
  • 结束会话

5、selenium常用方法

5.1 查找页面元素

findElement()

参数:By类(提供什么方式来查找元素)

返回值:webElement

findElements()

参数:By类(提供什么方式来查找元素)

返回值:List<WebElement>

5.2 元素的定位 By类

selector:基础选择器/复合选择器

功能:选中页面中指定的标签元素

xpath

语法:

  • 层级:/子级 // 跳级
  • 属性:@
  • 函数:contains()......

自动化里要求元素的定位必须唯一。但是在手动复制selector或者xpath元素的时候不一定是唯一的,需要我们手动修改到唯一的。

5.3 输入文本、点击、提交

sendKeys();

仅适用于文本字段和内容可编辑的元素;

click();

submit();

selenium官方不推荐使用submit,更推荐使用click,仅适用于表单元素。

 

5.4 清除

clear();

用于频繁测试输入是否可以重复输入。

5.5 获取文本、获取属性对应的值(注意区分)、获取页面的标题和URL

获取文本:getText()

获取属性对应的值:getAttribute()

获取页面的标题和URL:

6、窗口

6.1 窗口的大小设置:最大化、最小化、全屏窗口、手动设置窗口大小

6.2 窗口的切换

当浏览器每次打开一个标签页的时候,会自动的给每个标签页进行标识(句柄)。

6.3 屏幕截图

保存屏幕截图所用到的包:

  1. <dependency>
  2. <groupId>commons-io</groupId>
  3. <artifactId>commons-io</artifactId>
  4. <version>2.6</version>
  5. </dependency>

实例代码:

  1. //屏幕截图,保存现场
  2. File srcfile = driver.getScreenshotAs(OutputType.FILE);
  3. //把屏幕截图放到指定的路径下
  4. String filename = "my.png";
  5. FileUtils.copyFile(srcfile,new File(filename));

注意:

  • 当代码执行到查找结果页的元素的时候,页面还没有完全加载,此时需要添加等待机制,让其渲染完成。
  • 当图片文件名为固定格式的时候,多次执行程序会造成生成的图片被覆盖,可以将图片文件的命名添加动态数据(时间戳)。

7、selenium基础方法

7.1 等待

程序执行速度比浏览器渲染的速度要快得多,所以我们需要让程序等待一会。

四种等待:强制等待、隐式等待、显示等待、流畅等待。

  • 强制等待:程序阻塞进行,Thread.sleep( );(尽量少用,不然消耗太多时间)。
  • 隐式等待:隐式等待会作用于driver的整个生命周期,会一直轮询判断元素是否存在,如果不存在就等待设置好的时间里不断地进行轮询,直到元素能被找到。
  1. void waitControl(){
  2. //添加隐式等待
  3. driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
  4. driver.get("https://www.baidu.com");
  5. driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
  6. driver.findElement(By.cssSelector("#su")).click();
  7. driver.findElement(By.cssSelector("#\\31 > div > div > div > div > div > div.cos-row.row-text_Johh7.row_5y9Az > div > div.title-wrapper_XLSiK > a > div > p > span > span"));
  8. driver.quit();
  9. }

显示等待:当运行到需要等待的代码的时候,才会进行轮询

  1. void webDriverWait(){
  2. driver.get("https://www.baidu.com");
  3. driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
  4. driver.findElement(By.cssSelector("#su")).click();
  5. //添加显示等待
  6. new WebDriverWait(driver,Duration.ofSeconds(3)).
  7. until(driver->driver.findElement(By.cssSelector("#\\31 > div > div > div > div > div > div.cos-row.row-text_Johh7.row_5y9Az > div > div.title-wrapper_XLSiK > a > div > p > span > span")));
  8. driver.quit();
  9. }

7.2 浏览器导航

浏览器的前进、后退、刷新。

7.3 弹窗

弹窗的类型:警告弹窗、确认弹窗、提示弹窗。

处理弹窗的步骤:

  1. 将driver对象作用到弹窗上(切换到弹窗)。
  2. 选择确认(accept())或者取消(dismiss())或者弹窗输入文本(sendKeys())。
  1. //切换到弹窗进行弹窗的处理
  2. Alert alert = driver.switchTo().alert();
  3. Thread.sleep(2000);
  4. //1、点击确认
  5. alert.accept();
  6. //2、点击取消
  7. alert.dismiss();
  8. //3、输入文本
  9. alert.sendKeys("asdfasdcdsa");

7.4 选择框

选择框的选择方式:

  1. 根据文本来选择
  2. 根据属性来选择
  3. 根据序号来选择
  1. //先找到选择框元素
  2. WebElement ele = driver.findElement(By.cssSelector("#username"));
  3. //先穿创建选择框对象
  4. Select select = new Select(ele);
  5. Thread.sleep(2000);
  6. //根据文本选择
  7. select.selectByVisibleText("2021-12-12");
  8. //根据属性值来选择
  9. select.selectByValue("12.12");
  10. //根据序号来选择
  11. select.selectByIndex(1);

7.5 执行脚本

executScript()参数:js代码

  1. driver.get("https://www.baidu.com");
  2. driver.executeScript("document.documentElement.scrollTop=0");

7.6 文件上传

sendKeys(“文件路径+文件”)

driver.findElement(By.cssSelector("#kw")).sendKeys("C:\\HonorStoreDownload\\WebCache");

7.7 浏览器的参数设置

实际在工作中,测试人员将自动化部署在机器上自动的执行,测试人员不会每次都盯着自动化执行的过程,而是直接查看自动化执行的结果。

无头模式:

  1. void HeadlessControl(){
  2. //先创建对象,再设置浏览器参数
  3. ChromeOptions options = new ChromeOptions();
  4. //options.addArguments("-headless");
  5. ChromeDriver driver = new ChromeDriver();
  6. driver.get("https://www.baidu.com");
  7. driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
  8. driver.findElement(By.cssSelector("#su")).click();
  9. driver.quit();
  10. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1001111
推荐阅读
相关标签
  

闽ICP备14008679号