Bootstrap

Web自动化实战——Selenium4(自动化测试环境的搭建)

1. WEB自动化实战—Selenium4
  1. web自动化测试需求和挑战
  • 属于E2的测试,是软件质量保证的最后一道防线
  • 点点点:低调,复杂的场合无法测试
  • 好的测试,不仅仅模拟用户行为,还要记录、调试网页细节
  • 优势:
    • 提速增效
    • 解放双手
    • 技能提示
  • 目前主流工具
    • Cypress
    • Playwright
    • Selenium
2. Selenium的优势:
  • 浏览器支持醉的,兼容最好

  • 支持多种编程语言

  • 生态成熟,文档丰富

  • 进行APP自动化测试,事半功倍

      pip豆瓣源安装 :pip install xxx包 -i https://pypi.douban.com/simple/ 
    

Selenium自动化环境搭建

一键搭建

pip install webdriver-helper

webdriver-helper:

  • 自动获取浏览器的版本、操作系统类型
  • 自动下载浏览器驱动
  • 自动创建和返回WebDriver对象

控制浏览器

with get_webdriver() as driver:

​	driver.get(“https://baidu.com”)

​	自动关闭浏览器
3. Selenium自动化实战

web自动化测试三板斧:

  • 定位元素
  • 交互元素
  • 进行断言
3.1 八大定位策略
ID、name、css、xpath、classname、tag_name、link_text
3.2 pytest夹具使用
# 创建一个夹具
@pytest.fixture()
def driver():
    driver = get_webdriver() # 启动浏览器
    driver.get("http://appfront.huice.com/")

    # 前置部分,在测试用例之前执行
    # 写登录逻辑
    yield driver # yield 生成器的写法
    # 后置部分,在测试用例之后执行
    print('关闭浏览器')
    driver.quit()

浏览器启动的次数 = 测试用例的个数

如何避免,重复启动浏览器(每一次启动大概耗时3秒)

pytest夹具范围:

五种范围:

  • function:默认,每个用例执行一次

  • class:每个类执行一次

  • module:每个文件执行一次

  • package:每个包执行一次

  • session:整个测试过程只执行一次

  • 写法:@pytest.fixture(scope=“session”)

4. 解决登录的问题
  1. 自动登录
  2. 不必重复登录
5. 解决不登录的问题
  1. 不重启浏览器
  2. 保持不登录的状态,以便对登录进行测试

网站的登录状态,是如何保持的?

cookie

selenium可以清除cookies :driver.delete_all_cookies() 清除cookie

6. POM设计模式
  • pytest解决了用例层面的问题
  • pom解决了页面层面的问题

Page Object Model:页面对象 设计模式

  • 使用 对象 代表 页面
  • 使用 对象 的 属性 代表 页面的元素
  • 使用 对象 的 方法 代表 页面的操作

定义过程:

  1. 定义 BasePage (抽象类)
  2. 定义 Page (页面类)
  3. 定义元素的交互 (对象方法)

使用过程:

  1. 打开页面,实例化Page
  2. 调用Page方法,完成交互

;