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

《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》

一. 元素定位:自动化测试的 “精准导航”

Web 自动化的第一步,是让程序 “找到” 页面对应元素 —— 这就需要依赖标准化的定位方式。文档中明确提到,常见的元素定位方式包括 id、classname、tagname、xpath、cssSelector,其中cssSelectorxpath是实际测试中最常用的两种 。

1.1 cssSelector:简洁高效的选择器

cssSelector通过元素的属性或层级关系定位元素,分为基础选择器和复合选择器,实战中常用 id 选择器和子类选择器组合定位,确保精准性。例如:

  • 定位百度首页 “百度热搜” 元素:使用#hotsearch-wrapper > div,通过 id 选择器(#hotsearch-wrapper)和子类选择器(>)锁定父元素下的指定子元素 ;
  • 定位百度搜索输入框:直接使用 id 选择器#kw,因输入框的 id 属性 “kw” 在页面中唯一 ;
  • 定位 “百度一下” 按钮:同理使用 id 选择器#su,简洁且不易出错 。

在这里插入图片描述

1.2 xpath:灵活强大的路径语言

xpath不仅能在 HTML 中选取节点,还支持通过路径表达式、属性匹配、索引定位等复杂逻辑查找元素,适用场景更广泛。文档中给出了xpath的核心语法与实战案例:

  • 匹配指定属性的节点://*[@id='kw']可定位 id 为 “kw” 的元素,*表示匹配任意节点,@id='kw'是属性匹配条件 ;
  • 按索引定位节点:xpath 索引从 1 开始,例如//div/ul/li[3]可定位百度首页第三个 “百度热搜” 标签 、;
  • 获取父节点://input/..能快速定位 input 元素的父节点,适用于需要通过子元素反向查找父元素的场景 。

值得注意的是,虽然浏览器右键 “Copy selector/xpath” 能快速生成定位表达式,但这些自动生成的表达式可能不满足 “唯一性” 要求,实际测试中常需要手动修改 —— 比如删除冗余的层级路径、补充属性匹配条件,这也是掌握定位语法的核心原因。


二. 测试对象操作:定位后的 “核心动作”

找到元素后,需要通过函数对元素执行点击、输入、文本获取等操作,文档中详细列出了 C++ 自动化测试中最常用的操作函数及实战场景。

2.1 点击与提交:触发页面交互
  • 点击操作:使用click()函数,例如定位 “百度一下” 按钮后执行点击,触发搜索动作,代码示例为driver.find_element(By.CSS_SELECTOR, "#su").click()

代码语言:javascript

AI代码解释

#找到百度⼀下按钮并点击 driver.find_element(By.CSS_SELECTOR, "#su").click()
  • 提交操作:对于表单元素,可通过submit()函数提交表单,但实际测试中click()适用性更广,多数场景下优先使用。
2.2 文本输入与清除:模拟用户输入
  • 输入文本:send_keys("内容")函数可模拟键盘输入,例如向百度搜索框输入 “迪丽热巴”,代码为driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")

代码语言:javascript

AI代码解释

driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")
  • 清除文本:若需要更换输入内容,需先用clear()函数清空原有文本,再执行新的输入 —— 比如先输入 “迪丽热巴”,1 秒后清空并输入 “古力娜扎”,完整代码需结合time.sleep()控制时序

代码语言:javascript

AI代码解释

driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴") time.sleep(1) driver.find_element(By.CSS_SELECTOR, "#kw").clear() time.sleep(1) driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("古⼒娜扎")
2.3 文本与属性获取:验证测试结果

自动化测试中,常需要获取元素文本或属性值来验证结果是否符合预期:

  • 获取文本:通过text属性获取元素可见文本,例如获取百度热搜第一个标签的文本,代码为text = driver.find_element(By.XPATH,'//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]').text

代码语言:javascript

AI代码解释

text = driver.find_element(By.XPATH,'//*[@id="hotsearch-contentwrapper"]/li[1]/a/span[2]').text print(f"text:{text}")
  • 获取属性:通过get_attribute("属性名称")函数获取元素属性值 —— 比如获取按钮的 “value” 属性、链接的 “href” 属性,需注意区分 “文本” 和 “属性值”,避免混淆 ;

代码语言:javascript

AI代码解释

title = driver.title
  • 页面信息获取:driver.title可获取当前页面标题,driver.current_url可获取当前页面 URL,常用于验证页面跳转是否正确。

代码语言:javascript

AI代码解释

url = driver.current_url

三. 窗口与弹窗控制:解决 “多窗口与弹窗干扰”

自动化测试中,多窗口切换、弹窗弹出是常见场景,若不处理会导致脚本 “迷路” 或元素定位失败,文档中提供了完整的控制方案。

3.1 窗口控制:句柄是关键

每个浏览器窗口都有唯一的 “句柄(handle)”,程序通过句柄识别和切换窗口:

  • 获取句柄:driver.current_window_handle获取当前窗口句柄,driver.window_handles获取所有打开窗口的句柄列表 ;
  • 切换窗口:遍历所有句柄,找到与当前句柄不同的新句柄,通过driver.switch_to.window(window)切换到新窗口,适用于点击链接打开新页面的场景 ;

代码语言:javascript

AI代码解释

curWindow = driver.current_window_handle allWindows = driver.window_handles for window in allWindows: if window != curWindow: driver.switch_to.window(window)
  • 窗口大小与截图:driver.maximize_window()(最大化)driver.minimize_window()(最小化)可控制窗口大小;driver.save_screenshot("路径")能截取当前屏幕,用于报错时记录现场;—— 高阶用法可结合时间戳生成唯一文件名,避免截图覆盖 。

代码语言:javascript

AI代码解释

#窗⼝最⼤化 driver.maximize_window() #窗⼝最⼩化 driver.minimize_window() #窗⼝全屏 driver.fullscreen_window() #⼿动设置窗⼝⼤⼩ driver.set_window_size(1024,768) #关闭窗口 driver.close() 注意:窗⼝关闭后driver要重新定义

代码语言:javascript

AI代码解释

driver.save_screenshot('../images/image.png') #简单版本 driver.save_screenshot('../images/image.png') #⾼阶版本 filename = "autotest-"+datetime.datetime.now().strftime('%Y-%m-%d- %H%M%S')+'.png' driver.save_screenshot('../images/'+filename)
3.2 弹窗处理:Alert 接口来应对

页面弹窗(警告弹窗、确认弹窗、提示弹窗)无法通过常规元素定位找到,需使用 Selenium 提供的 Alert 接口:

  • 警告 / 确认弹窗:通过driver.switchTo.alert切换到弹窗,alert.accept()点击 “确定”,alert.dismiss()点击 “取消” ;


http://www.jsqmd.com/news/469916/

相关文章:

  • 芋道源码(无遮羞布版)Spring Boot 全景指南
  • 【C++篇】C++11:可变参数模板
  • 2026年防雷领域优质避雷塔推荐榜:避雷针塔/酒杯型电力塔/镀锌避雷塔/防雷避雷塔/高压输电塔/三柱避雷塔/单管避雷塔/选择指南 - 优质品牌商家
  • 【C++篇】C++11:lambda表达式
  • 港科校友| 罗咏丰:以校友导师身份回馈科大
  • 2026创新型企业知识产权维权机构推荐榜:商业竞业限制调查、商业背景调查、商业诋毁调查、知识产权代理、知识产权侵权取证选择指南 - 优质品牌商家
  • 2026年优质镀锌避雷塔行业推荐榜:钢管避雷塔/镀锌监控塔架/防火监控塔架/防雷避雷塔/单管避雷塔/圆钢避雷塔/选择指南 - 优质品牌商家
  • 【C++篇】C++11:右值引用与移动语义
  • 【C++篇】哈希扩展:位图和布隆过滤器+哈希切割
  • 2026年破碎机公司口碑榜:五大热门服务商深度解析 - 2026年企业推荐榜
  • 排队节省40分钟!金仓数据库守护湘江新区百万居民就医路
  • 网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
  • 若依微服务中配置 MySQL + DM 多数据源
  • 解决MySQL8.0报错Client does not support authentication protocol requested by server...问题
  • 2026年烟囱塔优质产品推荐榜:监控铁塔/瞭望监控塔/碳钢烟囱塔/角钢监控塔/道路监控塔/钢管监控塔/镀锌监控塔架/选择指南 - 优质品牌商家
  • 2026优秀可靠门窗品牌推荐:四川门窗品牌/性价比门窗/成都门窗/推拉窗/推拉门/系统门窗/节能门窗/铝合金门窗/选择指南 - 优质品牌商家
  • 2026年评价高的超低温试验箱厂家推荐:高精度-70℃~-180℃超低温试验箱源头厂家推荐 - 品牌宣传支持者
  • 这个 PUA Skill 火了:用阿里/字节的绩效话术逼 Claude 不敢放弃,一言不合打 3.25
  • 解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
  • 2026模块化移动售楼处优质服务商推荐榜:临时售楼处、临时样板间、创意集装箱售楼处、可定制的售楼处、可拆卸售楼处选择指南 - 优质品牌商家
  • 2026年初至今,吉林地区值得信赖的路边石供应商精选 - 2026年企业推荐榜
  • 工业运动控制可靠伦茨伺服品牌推荐指南:科尔摩根电机、科尔摩根直线电机、科尔摩根维修、科尔摩根驱动器、伦茨PLC选择指南 - 优质品牌商家
  • 第二章 Spring中的Bean
  • 聚焦3c电子精密抓取需求,精选2026年高可靠3c电子电爪品牌 - 品牌2026
  • 机器人灵巧手技术与应用场景:助力挑选专业灵巧手品牌 - 品牌2026
  • 为什么RTL总是姗姗来迟?
  • 2026年个性化定制防盗盖供应商推荐指南:试管瓶、进样瓶、避光瓶、酒瓶盖、铝塑盖、铝盖、食品级玻璃瓶、儿童安全盖选择指南 - 优质品牌商家
  • 解决JDK25,IDEA控制台中文乱码问题
  • 如何在 Golang 项目中高效运用 Protocol Buffers
  • 2026可靠直流充电桩优质产品推荐榜:电动汽车充电桩、重卡充电桩、高功率充电桩、3C国标充电桩、V2G充电桩、快充充电桩选择指南 - 优质品牌商家