news 2026/4/12 16:52:35

10.4 Selenium:Web 自动化测试框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10.4 Selenium:Web 自动化测试框架

文章目录

  • 前言
  • 一、 安装
    • 1.1 安装 Selenium
    • 1.2 安装 WebDriver
  • 二、 浏览器操作
    • 2.1 启动浏览器
    • 2.2 窗口控制
  • 三、 元素定位
  • 四、 等待机制
    • 4.1 显式等待
    • 4.2 隐式等待

前言

Selenium 是一个用于 Web 应用程序测试的框架,其测试直接在浏览器中运行,能够模拟真实用户的操作行为。它支持多平台(Windows、Linux、macOS)、多语言(Python、Perl、PHP、C# 等)以及多浏览器(Chrome、Firefox、IE、Safari 等)。


一、 安装

1.1 安装 Selenium

bashpipinstallselenium

1.2 安装 WebDriver

各主流浏览器的 WebDriver 下载地址:
Chrome:https://chromedriver.chromium.org/
Firefox:https://github.com/mozilla/geckodriver/releases
IE:https://selenium.dev/downloads/
配置示例(Chrome on Windows):
下载与本地 Chrome 版本对应的 chromedriver
解压后将 chromedriver.exe 放置于 Python 安装目录下(或添加到系统 PATH)

二、 浏览器操作

2.1 启动浏览器

1)基础启动方式

pythonfromseleniumimportwebdriver# Chromebrowser=webdriver.Chrome()browser.get('https://mail.163.com/')# Firefoxbrowser=webdriver.Firefox()browser.get('https://mail.163.com/')# IEbrowser=webdriver.Ie()browser.get('https://mail.163.com/')

2)加载用户配置启动

pythonfromseleniumimportwebdriver option=webdriver.ChromeOptions()# 使用指定用户配置目录(注意路径转义)option.add_argument('--user-data-dir=C:\\Users\\admin\\AppData\\Local\\Google\\Chrome\\User Data')browser=webdriver.Chrome(options=option)browser.get('https://mail.163.com/')browser.quit()

提示:执行前请确保浏览器已完全关闭

3)无头(Headless)模式

pythonfromseleniumimportwebdriver chrome_options=webdriver.ChromeOptions()chrome_options.add_argument('--headless')# 无界面模式chrome_options.add_argument('--disable-gpu')# 禁用 GPU 加速browser=webdriver.Chrome(options=chrome_options)browser.get('https://mail.163.com/')print(browser.page_source)# 获取页面源码browser.quit()

2.2 窗口控制

python# 最大化窗口browser.maximize_window()# 最小化窗口browser.minimize_window()# 自定义窗口尺寸(宽×高)browser.set_window_size(500,800)# 前进/后退browser.forward()browser.back()

三、 元素定位

假设目标页面源码如下:

html<html><body><form><inputid="fid"name="fid"type="text"/><inputid="firstName"name="fname"class="fname"type="text"/><inputid="lastName"name="fname"class="fname"type="text"/><ahref="index.html">index</a></form></body></html>

常用定位方法:

python# 1. 通过 ID 定位browser.find_element_by_id('fid')# 2. 通过 Name 定位browser.find_element_by_name('fname')# 首个匹配元素browser.find_elements_by_name('fname')# 所有匹配元素(列表)# 3. 通过 Class 定位browser.find_element_by_class_name('fname')browser.find_elements_by_class_name('fname')# 4. 通过标签名定位browser.find_element_by_tag_name('input')browser.find_elements_by_tag_name('input')# 5. CSS 选择器定位browser.find_element_by_css_selector('.fname')browser.find_elements_by_css_selector('.fname')# 6. 链接文本定位browser.find_element_by_link_text('index')# 完整文本匹配browser.find_element_by_partial_link_text('ind')# 部分文本匹配# 7. XPath 定位browser.find_element_by_xpath("//input[@id='fid']")browser.find_elements_by_xpath("//input[@name='fname']")

四、 等待机制

为处理动态加载内容,Selenium 提供两种等待方式:

4.1 显式等待

pythonfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC browser=webdriver.Chrome()browser.get('https://mail.163.com/')try:# 最多等待5秒,每0.5秒检查一次条件element=WebDriverWait(browser,5).until(EC.presence_of_element_located((By.ID,'lbNormal')))print(element)finally:browser.quit()

4.2 隐式等待

pythonfromseleniumimportwebdriver browser=webdriver.Chrome()browser.implicitly_wait(5)# 设置全局等待时间browser.get('https://mail.163.com/')element=browser.find_element_by_id('lbNormal')print(element)browser.quit()

与 time.sleep() 的区别:隐式等待在超时时间内若元素加载完成则立即继续执行,而非强制等待固定时长。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 9:36:54

FPGA 通过 SPI 模式读写 SD 卡:实现与移植探索

FPGA以SPI模式读写SD卡&#xff0c;已经下板验证通过。 可移植到任何FPGA之中。在数字电路设计领域&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;凭借其灵活性和强大的并行处理能力&#xff0c;成为众多项目的首选。而 SD 卡作为常用的存储介质&#xff0c;实现 F…

作者头像 李华
网站建设 2026/4/12 11:37:36

Thinkphp-Laravel电子设备商品商城采购系统的研究与设计

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 随着电子商务的快速发展&#xff0c;电子设备商品商城的采购系统成为企业提升运营效率的关键工具。本研究基于ThinkPHP和Laravel框架&#xff0c;设计并实现了一套高效、安全的电子设…

作者头像 李华
网站建设 2026/4/8 18:10:25

空心正交电感两路线圈信号极值偏移方向

简 介&#xff1a; 摘要&#xff1a;实验研究了空心正交电感测量交变磁场时出现的左右不对称现象。通过对比顺时针和逆时针旋转测量结果&#xff0c;发现两组线圈信号极值存在固定方向的偏移&#xff0c;且该偏移与旋转方向、磁场方位及传感器位置均无关。测试包括改变电磁门方…

作者头像 李华
网站建设 2026/4/7 11:41:09

面向自然科学领域机器学习与深度学习(高维数据预处理—可解释ML/DL—时空建模—不确定性量化-全程AI+Python)

随着观测技术、数值模拟与计算基础设施的迅猛发展&#xff0c;地球系统科学、生态学、环境科学等自然科学领域正迈入“大数据智能模型”驱动的新阶段。传统的统计建模方法虽具可解释性&#xff0c;却难以应对高维、非线性、多源异构的复杂自然系统&#xff1b;而以机器学习和深…

作者头像 李华
网站建设 2026/4/8 13:45:58

用户反馈收集:驱动产品不断进化

用户反馈收集&#xff1a;驱动产品不断进化 Image-to-Video图像转视频生成器 二次构建开发by科哥 在AI生成内容&#xff08;AIGC&#xff09;快速演进的今天&#xff0c;从静态图像到动态视频的跨模态生成正成为创意生产的新前沿。作为开发者“科哥”主导的二次重构项目&#x…

作者头像 李华