UI自动化框架之Selenium简介(一)

UI自动化框架之Selenium

  • UI自动化框架之Selenium
    • 一、前言
    • 二、Selenium工具家族
      • [2.1 Selenium IDE](#2.1 Selenium IDE)
      • [2.2 Selenium webdriver](#2.2 Selenium webdriver)
      • [2.3 Selenium grid](#2.3 Selenium grid)
    • 三、Selenium及相关驱动和浏览器安装
      • [3.1 安装selenium](#3.1 安装selenium)
      • [3.2 下载浏览器驱动](#3.2 下载浏览器驱动)
      • [3.3 示例代码](#3.3 示例代码)
      • [3.4 页面常用操作](#3.4 页面常用操作)
    • [四、Selenium WebDriver实现原理介绍](#四、Selenium WebDriver实现原理介绍)
      • [4.1 Selenium WebDriver核心组件](#4.1 Selenium WebDriver核心组件)
        • [4.1.1 浏览器驱动](#4.1.1 浏览器驱动)
        • [4.1.2 WebDriver客户端](#4.1.2 WebDriver客户端)
        • [4.1.3 WebDriver协议](#4.1.3 WebDriver协议)
      • [4.2 Selenium WebDriver与浏览器的交互](#4.2 Selenium WebDriver与浏览器的交互)
      • [4.3 WebDriver的自动化测试实现](#4.3 WebDriver的自动化测试实现)

UI自动化框架之Selenium

一、前言

Selenium 又称浏览器自动化测试框架,是用于web应用程序自动化测试的开源工具。

  • 支持Chrome、Firefox、Edge、IE、Safari等主流浏览器
  • 支持Java、Python、perl等编程语音进行自动化脚本编写
  • 官网地址 https://selenium.dev/

二、Selenium工具家族

2.1 Selenium IDE

Selenium ide是录制工具,其实就是谷歌和火狐的插件。但是这个录制不灵活,比如:需要做一些判断、循环控制等复杂的业务场景自动化,稳定性不好,不推荐使用。

2.2 Selenium webdriver

Selenium webdriver提供了各种语言环境的API来支持更多控制权,编写的脚本更加符合标准软件开发实践的应用程序。

2.3 Selenium grid

分布式测试,通过Selenium grid可以将自动化测试脚本分发到不同的测试机器中执行;用例份不不同的设备上运动,提高运行效率。

三、Selenium及相关驱动和浏览器安装

3.1 安装selenium

指定selenium版本安装,因为不同的版本,兼容性会不同

python 复制代码
pip install selenium==4.3.0

3.2 下载浏览器驱动

浏览器驱动程序,要与浏览器的类型和版本相匹配

浏览器 下载地址 驱动下载地址
谷歌浏览器 https://www.chromedownloads.net/chrome64win/ https://registry.npmmirror.com/binary.html?path=chromedriver

注意:

  • 浏览器安装最好是使用默认路径,不同代码可能找不到浏览器

  • 浏览器一定要关闭自动更新,因为浏览器升级后,原来驱动不可用

3.3 示例代码

python 复制代码
from selenium import webdriver

# 启动与浏览器会话,打开浏览器,同时也会去启动驱动程序
driver = webdriver.Chrome()

# 打开谷歌浏览器,然后访问百度
driver.get("http://www.baidu.com")

# 关闭正在使用的窗口
driver.close()

# 主动结束与浏览器的会话,关闭浏览器,关闭驱动程序
# driver.quit()

3.4 页面常用操作

python 复制代码
import time
from selenium import webdriver

# 启动与浏览器会话,打开浏览器,同时也会去启动驱动程序
driver = webdriver.Chrome()

# 打开谷歌浏览器,然后访问百度
driver.get("http://www.baidu.com")

# 浏览器最大化
driver.maximize_windoe()

# 刷新当前页面
driver.refresh()

# 回到上个页面,如果有历史访问
driver.back()

# 回到下个页面,如果有历史访问
driver.forward()

# 获取页面源吗
print(driver.page_source)

# 获取页面标题
print(driver.title)

# 获取页面url
print(driver.current_url)

# 退出浏览器
driver.close()
driver.quit()

quit和close的区别:

1)driver.quit():真正关闭浏览器,把所有的窗口都关闭,并且退出浏览器、关闭驱动程序

2)driver.close():关闭当前正在使用的窗口。如果当前浏览器窗口只有一个,则会关闭窗口并关闭浏览器;如果当前浏览器有多个,会关闭driver驱动焦点所在的窗口

四、Selenium WebDriver实现原理介绍

4.1 Selenium WebDriver核心组件

4.1.1 浏览器驱动

浏览器驱动Browser Drivers:webdriver通过浏览器驱动与特定浏览器进行交互。不同的浏览器有不同的驱动,如果Chrome需要ChromeDriver,Firefox需要GeckoDriver。这些驱动是webdriver与浏览器之间的桥梁。

4.1.2 WebDriver客户端

WebDriver客户端是负责与浏览器驱动进行通信的。WebDriver客户端可以是任何支持WebDriver协议的语言库,如:java、python、C#等。

4.1.3 WebDriver协议

WebDriver协议定义了浏览器驱动与WebDeiver客户端之间的通信规则。它是一个基于HTTP协议,通过发送和接受json格式的消息来实现通信。

4.2 Selenium WebDriver与浏览器的交互

  1. 建立连接: 当webdriver客户端启动时候,首先与对应的浏览器建立连接。浏览器驱动负责并控制指定的浏览器实例
  2. 发送命令: 一旦与浏览器建立了连接,webdriver客户端就可以通过发送HTTP请求来执行各种操作。这些请求遵循webdriver协议,包含要执行的操作类型和参数
  3. 执行操作: 浏览器驱动接受到请求后,会解析请求内容,并在浏览器实例中执行相应的操作。例如:假设是请求点击某个元素,浏览器驱动会找到改元素,并模拟点击事件
  4. 获取结果: 浏览器驱动执行操作后,会将结果返回给webdriver客户端。这些结果通常以json的格式返回,包括操作的成功与否,操作后的页面状态等信息

4.3 WebDriver的自动化测试实现

  1. 脚本编写: 使用支持WebDriver协议的语言编写自动化测试的脚本,脚本包含了要执行的测试步骤和预期结果
  2. 脚本执行: 将写好的脚本运行在WebDriver客户端上。脚本会按照顺序发送请求到浏览器驱动,控制浏览器执行想要的操作
  3. 结果验证: 在执行过程中,WebDriver客户端会不断接收并处理浏览器驱动返回的结果。根据这些结果,验证页面状态、元素属性等是否符合预期
  4. 测试报告: 根据测试结果生成测试报告,包含测试步骤、失败原因等信息
相关推荐
知乎的哥廷根数学学派4 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词4 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
人工干智能4 小时前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook4 小时前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
OidEncoder4 小时前
从 “粗放清扫” 到 “毫米级作业”,编码器重塑环卫机器人新能力
人工智能·自动化·智慧城市
阿部多瑞 ABU5 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab5 小时前
VScode python插件
ide·vscode·python
知乎的哥廷根数学学派6 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove13146 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派6 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习