selenium 4.x入门篇(环境搭建、八大元素定位)

news/2024/9/23 7:51:31/

背景 

Web自动化测现状

1. 属于 E2E 测试
2. 过去通过点点点
3. 好的测试,还需要记录、调试网页的细节

一、selenium4.x环境搭建

一键搭建

pip3 install webdriver-helper

安装后自动的完成:

1. 查看浏览器的版本号
2. 查询操作系统的类型
3. 根据 1 2 选择浏览器驱动版本
4. 下载浏览器区别,放在指定的目录

检查是否搭建好

from webdriver_helper import get_webdriver
driver = get_webdriver()  # 启动浏览器
driver.get("https://baidu.com")  # 控制浏览器
driver.quit()  # 关闭浏览器

二、元素定位

Selenium 提供了 8 个元素定位的 API ,可以分为三种:
1. a 标签定位策略
2. 属性定位策略
3. 通用定位策略

使用方法是一样
driver.find_element(By.ID, 'btn')
find_element 用来定位单个元素
find_elements 用来定位多个元素

1. a标签定位策略

  • LINK_TEXT :精确匹配
  • PARTIAL_LINK_TEXT :模糊匹配

 

driver.get("https://www.dangdang.com/") # 控制浏览器
# el = driver.find_element(By.LINK_TEXT, "登录") # 定位元素
el = driver.find_element(By.PARTIAL_LINK_TEXT, "登") # 定位元素
print(el.tag_name, el.text) # 打印元素的信息

2. 属性定位策略


ID
NAME
TAG_NAME
CLASS_NAME
都属于元素的属性 

 搜索框

el = driver.find_element(By.TAG_NAME, "input")
print(el.tag_name, el.text)  # 打印元素的信息
el = driver.find_element(By.ID, "key_S")
print(el.tag_name, el.text)  # 打印元素的信息
el = driver.find_element(By.NAME, "key")
print(el.tag_name, el.text)  # 打印元素的信息

3. 通用定位策略


CSS:CSS语法,不够直观
XPath :直观的层级结构


对于大部分的定位策略,其底层,是使用CSS或者XPath实现 

重点XPath

1. XPath 是一种查询语言,支持逻辑表达式和函数
2. 可以实现复杂元素的动态定位
3. 可以用于 App 自动化测试的定位
层级直观
//*[@id="key_S"]
/html/body/div[2]/div[3]/div/div[2]/form/input[1]
/html/body/div/../form

三、xpath 语法详解

1. xpath层级 

  • / (开头) 根路径
  • // 任一级
  • //div , 任意路径下的div元素
  • / (中间) 下一级
  • //div/p 任意路径下的div下的p
  • //div//p 任意路径下的div下的任意层级下的p
  • . 当前节点(同级)
  • .. 上一级
  • [n] 序号 表示同级元素的序号
  • @ 属性
//input[@name="key"]

例子-登录页面:通过 a定位 b, b是 a的两个上级的下级(父子兄弟)

//input[@type="password"]/../..//input

验证:如何验证 xpath是否正确-CSDN博客

2. xpath的函数

函数是 XPath 另一个魅力,常用函数:
  • text : 精确匹配
$x("//*[text()='孩子一读就懂的漫画儿童心理学(全5册)漫画小学生心理 为你自己读书 好习惯带来好成绩 儿童心理学情绪掌控漫画书 人际交往与性格培养绘本故事书籍​​​​​​​']")
  • contains :模糊匹配
$x('//*[contains(text(),"一读就懂")]')
  • starts-with:开头一致
$x('//*[starts-with(text(),"孩子一读")]')

  ​​​​​​​


http://www.ppmy.cn/news/1444569.html

相关文章

纯血鸿蒙APP实战开发——全局状态保留能力弹窗

全局状态保留能力弹窗 介绍 全局状态保留能力弹窗一种很常见的能力,能够保持状态,且支持全局控制显隐状态以及自定义布局。使用效果参考评论组件 效果图预览 使用说明 使用案例参考短视频案例 首先程序入口页对全局弹窗初始化,使用Globa…

分布式事务Seata<XA模式、AT模式>解决方案思路(针对多数据源、分库分表、微服务、微服务分库分表4种场景)

seata的xa的方式解决 保证强一致性 原理说明: 1.启动seata服务器TC(控制台7091可以查看) 2.启动spring项目 初始化TM RM,实际上TM和RM注册到TC中 3.浏览器访问执行方法,TM向TC请求开启全局事务, 返回一个全…

redis中使用pipeline批量执行命令,提升性能

注意:此操作非原子性 将一批要执行的redis命令提交到pipeline中,pipeline一次性的将数据发送给服务器,服务器再逐条执行命令。 redisTemplate中已经提供了对应方法executePipelined()可以直接调用,它支持两个类型…

极客蒂姆·斯威尼:用虚幻引擎,修补真实世界(下) | 人物志048

斯威尼创办了EPIC公司,并发行了自己的游戏ZZT。那一年,他21岁。斯威尼说,21岁是个“更容易满足”的年纪,那个时候,每天的三四个订单已经足够令他欣喜若狂。“每天能赚大约100美元。在当时,这真不是一笔小钱…

安卓手机APP开发__媒体开发部分__APK裁剪

安卓手机APP开发__媒体开发部分__APK裁剪 目录 概述 仅使用必要的依赖 启用代码和资源的裁剪 指定你的APP需要哪一个渲染器 指定你的APP需要哪个抽取器 定制媒体源的实例化 概述 最小化APK的大小是开发一个好的安卓APP的一个重要的方面.当面向的是正在开发 的市场时更是…

Apollo 7周年大会:百度智能驾驶的展望与未来

本心、输入输出、结果 文章目录 Apollo 7周年大会:百度智能驾驶的展望与未来前言百度集团副总裁、智能驾驶事业群组总裁王云鹏发言 直播回放大会相关内容先了解 Apollo开放平台 9.0架构图 发布产品Apollo 定义自己对于智能化的认知百度集团副总裁 王云鹏…

【Pytorch】NameError: name ‘Variable‘ is not defined

报错 NameError Traceback (most recent call last) Cell In[20], line 42 for epoch in range(num_epochs):3 if torch.cuda.is_available(): ----> 4 inputs Variable(x_train).cuda()5 target Variable(y_train).…

基于Spring Boot的租房网站设计与实现

基于Spring Boot的租房网站设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统首页界面图,在租房网站可以查看首页、房屋信…