当前位置: 首页 > news >正文

【软件测试】_使用selenium进行自动化测试示例

目录

1. 导入依赖

2. 使用selenium编写测试代码

 3. 运行结果

4. 关于浏览器驱动管理及浏览器驱动配置


创建一个空项目用于进行selenium的自动化测试。

1. 导入依赖

    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.8.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0</version>
        </dependency>
    </dependencies>

其中包含两个依赖:
(1)驱动管理:webdrivermanager;

(2) selenium库:selenium-java;

2. 使用selenium编写测试代码

在test包下的java包下创建测试类:FirstTest和含main方法的测试类调用类:runCase:

FirstTest类:

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class FirstTest {
    // 测试百度搜索关键词:spring官网
    void test01() throws InterruptedException {
        // 1. 使用驱动打开浏览器
        WebDriverManager.chromedriver().setup();

        // 增加浏览器配置:创建驱动对象时强制指定允许访问所有链接
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        // 创建Chrome的驱动对象
        WebDriver driver = new ChromeDriver(options);

        // 2. 输入网址:https://www.baidu.com
        driver.get("https://www.baidu.com");
        Thread.sleep(1000);

        // 3. 找到输入框输入关键词
        driver.findElement(By.cssSelector("#kw")).sendKeys("spring官网");
        Thread.sleep(1000);
        // 4. 找到百度一下按钮并点击
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(3000);
        // 5. 关闭浏览器
        driver.quit();
    }
}

runCase类:

public class runCase {
    public static void main(String[] args) throws InterruptedException {
        FirstTest test=new FirstTest();
        test.test01();
    }
}

 3. 运行结果

4. 关于浏览器驱动管理及浏览器驱动配置

1、浏览器驱动管理程序与浏览器驱动

由于需要使用不同的浏览器驱动才能打开对应的浏览器,且需使用不同版本的浏览器驱动才能打开对应版本的浏览器。

为避免由于浏览器多版本而导致对应驱动多版本对测试造成的麻烦及困难,比如在浏览器更新而驱动尚未更新的时间差中,自动化运行就会报错,从而导致自动化的误报率。

为了降低由于浏览器版本的自动升级而导致的自动化误报率,可使用驱动管理进行对应驱动的正确下载;

在上文中:

(1)WebDriverManager就是一个驱动管理程序,它可以打开多个浏览器驱动:

WebDriverManager.chromedriver().setup()就是使用驱动管理程序打开Chrome的浏览器驱动;

(2)创建目标浏览器的驱动对象,本例采用Chrome浏览器,故使用WebDriver类创建一个ChromeDriver对象表示Chrome驱动对象。

2、浏览器配置问题

对于selenium实现自动化测试存在有些外部链接不可访问的问题,因此需要增加浏览器配置使得在创建浏览器驱动对象时强制指定允许访问所有的链接:

具体通过ChromeOptions类创建一个对象,调用addArguments方法实现:

令其参数为--remote-allow-origins=*,表示允许访问所有链接。

在创建驱动对象(WebDriver类)时,将ChromeOptions类创建的对象作为参数进行传递。

3、 其他细节:

(1)调用浏览器驱动对象的get方法时,传递的url参数必须是完整的url;

(2)由于代码执行较快,为了便于观察,采用sleep实现3秒的等待;

相关文章:

  • 神经网络 - 激活函数(ReLU 函数)
  • torch.einsum 的 10 个常见用法详解以及多头注意力实现
  • LeetCode 2353. 设计食物评分系统题解
  • 3.jvm的执行流程
  • 16. LangChain实战项目2——易速鲜花内部问答系统
  • C++小课堂——变量的声明,赋值和初始化
  • h5 IOS端渐变的兼容问题 渐变实现弧形效果
  • 深入解析数据倾斜:原因、影响与优化方案
  • 回忆Redis的持久化机制
  • git clone的时候出现出现error
  • 2-1文件描述符
  • C语言学习笔记-初阶(19)猜数字游戏:分支、循环结构的应用
  • 《论负载均衡技术在Web系统中的应用》审题技巧 - 系统架构设计师
  • C++数据结构之数组(详解)
  • 【设计原则】里氏替换原则(LSP):构建稳健继承体系的黄金法则
  • docx.js详细教程:入门到入土,没有之一(持续迭代中....)
  • Spring Cloud Gateway 整合Spring Security
  • 【CSS—前端快速入门】CSS 常用样式
  • 使用 `resolvectl` 配置 DNS 的技术文档
  • 【Python 数据结构 1.零基础复习】
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 公示资费套餐、规范营销行为,今年信息通信行业将办好这十件实事
  • 时隔3年,持续近2小时,俄乌在土耳其谈成了什么?
  • 上海比常年平均时间提前12天入夏,明天最高气温可达33℃
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯今日执行死刑
  • 讲座预告|以危机为视角解读全球治理