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

【软件测试开发】:软件测试常用函数1.0(C++)

1. 元素的定位

web⾃动化测试的操作核⼼是能够找到⻚⾯对应的元素,然后才能对元素进⾏具体的操作。
常⻅的元素定位⽅式⾮常多,如id,classname,tagname,xpath,cssSelector
常⽤的主要由cssSelector和xpath

1.1 cssSelector

选择器的功能:选中⻚⾯中指定的标签元素
选择器的种类分为基础选择器和复合选择器,常⻅的元素定位⽅式可以通过id选择器和⼦类选择器来进⾏定位

定位百度⾸⻚的“百度热搜”元素,可以使⽤通过id选择器和⼦类选择器进⾏定位:
#shotsearch-wrapper > div
“搜索输⼊框元素”:#kw
“百度⼀下按钮”:#su

1.2 xpath

XML路径语⾔,不仅可以在XML⽂件中查找信息,还可以在HTML中选取节点。
xpath使⽤路径表达式来选择xml⽂档中的节点
xpath语法中:

1.2.1 获取HTML⻚⾯所有的节点

//*

1.2.2 获取HTML⻚⾯指定的节点

//[指定节点]
//ul :获取HTML⻚⾯所有的ul节点
//input:获取HTML⻚⾯所有的input节点

1.2.3 获取⼀个节点中的直接⼦节点

/
//span/input

1.2.4 获取⼀个节点的⽗节点


//input/…
获取input节点的⽗节点

1.2.5 实现节点属性的匹配

[@…]
//*[@id=‘kw’]
匹配HTML⻚⾯中id属性为kw的节点

1.2.6 使⽤指定索引的⽅式获取对应的节点内容

注意:xpath的索引是从1开始的。
百度⾸⻚通过://div/ul/li[3]定位到第三个百度热搜标签更便捷的⽣成
selector/xpath的⽅式:右键选择复制
“Copy selector/xpath”
案例:如果想要匹配到百度⾸⻚指定的新闻⽂本或者节点集:,直接使⽤wrapper > li 能够满⾜吗?
问题:既然可以⼿动复制
#hotsearch-content
selector/xpath的⽅式 ,为什么还有了解语法?
⼿动复制的selector/xpath表达式并不⼀定满⾜上⾯的唯⼀性的要求,有时候也需要⼿动的进⾏修改表达式比

案例:百度⾸⻚(需要登陆百度账号)右侧的热搜,复制li标签下的a标签,复制好的的selector为:#title-content ,xpath为:
//*[@id=“title-content”]

  1. 操作测试对象
    获取到了⻚⾯的元素之后,接下来就是要对元素进⾏操作了。常⻅的操作有点击、提交、输⼊、清除、获取⽂本。
    click()
1.#找到百度⼀下按钮并点击
2.driver.find_element(By.CSS_SELECTOR, "#su").click()

2.2 模拟按键输⼊
send_keys(“”)

1.driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")

2.3 清除⽂本内容
输⼊⽂本后⼜想换⼀个新的关键词,这⾥就需要⽤到
clear()

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.4 获取⽂本信息
如果判断获取到的元素对应的⽂本是否符合预期呢?获取元素对应的⽂本并打印⼀下~~
获取⽂本信息:
1.text

1.text = driver.find_element(By.XPATH,'//*[@id="hotsearch-content
wrapper"]/li[1]/a/span[2]').text2/
2.print(f"text:{text}")

问题:是否可以通过text 获取到“百度⼀下按钮”上的⽂字“百度⼀下”呢?尝试⼀下
注意:⽂本和属性值不要混淆了。获取属性值需要使⽤⽅法
2.5 获取当前⻚⾯标题
title

1.title = driver.title

获取当前⻚⾯URL
current_url

url = driver.current_url

相关文章:

  • 『PostgreSQL』 Ubuntu 系统下PG15的安装与 PGVector 配置指南
  • 在本地部署DeepSeek等大模型时,需警惕的潜在安全风险
  • MongoDB 副本集的健康指标 写关注级别
  • 智谱AI开源CogView4,支持中英文,性能比肩flux!
  • 用Nutch库的HTTP请求写个万能下载程序
  • Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步
  • 时序数据库TimescaleDB基本操作示例
  • 米尔电子-LR3568-烧录鸿蒙
  • 倒排索引(Inverted Index)
  • 【从二维到一维:动态规划——01背包完全背包的空间优化之路】—— 经典例题解答,将问题转化为背包问题
  • 在线json转ArkTs-harmonyos
  • 《 YOLOv5、YOLOv8、YOLO11训练的关键文件:data.yaml文件编写全解》
  • 再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向
  • Java集合_八股场景题
  • C# backgroundworker类
  • [20250304] 关于 RISC-V芯片 的介绍
  • 游戏引擎学习第149天
  • 快速谱峭度算法解析
  • Ubuntu用户安装cpolar内网穿透
  • leetcode日记(88)对称二叉树
  • 商务部:今年前3月自贸试验区进出口总额达2万亿元
  • 四个“从未如此”使巴以加沙战火绵延时间创下历史之最
  • 人民网三评“网络烂梗”:莫让低级趣味围猎青少年
  • 占地57亩的“潮汕豪宅”面临强制拆除:曾被实施没收,8年间举行5次听证会
  • 从《让·桑特伊》到《追忆》,假故事的胜利
  • 马上评丨岂能为流量拿自己的生命开玩笑