selenium入门篇(环境搭建、八大定位)

背景 

Web自动化测现状

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

 

 

一、selenium环境搭建

一键搭建

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.mzph.cn/pingmian/4016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地Mysql开启远程访问(图文)

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 事因是访问同事的数据库时,出现无法访问 出现1130 - Host ‘IT07’ is not allowed to connect to this MySQL server截图如下: 2. 原理分析 如果账号密码地址都正常的情况下,这是没开…

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

随着云时代的到来,越来越多企业开始在公有云、私有云乃至 K8s 容器平台构建实时数据平台。云计算基础设施的革新,促使着数据仓库朝着云原生的方向发展。而用户日益复杂的业务负载和降本增效的需求,对于系统资源的精细化管理和成本效益等方面提…

笔记:oracle报错ORA-55941

说明 在删除audsys下的表时报错 ORA-55941: 不允许对表 "AUDSYS"."CLI_SWP$233f2a8a$1$1" 执行 DML 和 DDL 操作解决方案 扩展 定期PURGE部分AUD$ 第一步针对AUDIT_TRAIL_AUD_STD设置init_cleanup每24小时执行一次. BEGIN IF NOT DBMS_AUDIT_MGMT.IS_…

IDEA 编码规约扫描 Code inspection did not find anything to report.

IDEA安装了Alibaba Java Coding Guidelines插件,却看不到规约检查结果。手动进行编码规约扫描,弹窗提示“Code inspection did not find anything to report.”: 这种情况是因为代码文件所在的目录被标记成了测试文件(Test Source…

IT運維國産化替代:挑戰與機遇並存

隨著信創國産化浪潮的持續推進,IT運維(ITOM)作為信息化體系中的關鍵環節,其國産化替代的重要性日益凸顯。面對日益複雜的國內外信息技術環境,以及企業數字化進程的快速發展,企事業單位在IT運維方面正面臨著…

python3GUI--PyQt5打包心得(三)NIS Edit制作安装程序(详细图文演示)

文章目录 一.前言二.介绍三.下载、安装1.下载2.安装 四.制作安装程序四.验证五.总结 一.前言 传送门: python3GUI–PyQt5打包心得(详细图文演示) python3GU…

本地体验最强开源模型Llama3+Qnw(支持Windows和Mac)

一键运行大模型本地软件(含模型):点击下载 Meta放出Llama3模型了,也应该是这段时间里的一个科技大新闻了。 Llama一直都是开源大语言模型的领头羊驼。 而Llama3又是所有羊驼中最新的领头羊。 可以简单地来看一下官方的对比数据…

SnapGene Mac v5.3.1中文激活版:综合性分子生物学软件

SnapGene Mac是一款功能全面、操作便捷的综合性分子生物学软件,专为Mac用户打造。它集成了DNA序列编辑、分析、可视化和团队协作等多种功能,为科研人员提供了一个高效、可靠的分子生物学研究工具。 SnapGene Mac v5.3.1中文激活版下载 在SnapGene Mac中&…

idea自定义配置文件的注释

打开 IntelliJ Idea 软件 依次找到 File—>Editor—>File and Code Templates 设置 Files 下的Class、Interface、Enum等 输入下面的内容 /** * description: ${NAME} * date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * author: author **/

深度学习比较有用的网站

1.前沿论文学习和效果对比 Browse the State-of-the-Art in Machine Learning | Papers With Code 超简单实用,推荐的深度学习科研必备网站(轻松找论文,代码项目,写论文综述)| 土堆教程_哔哩哔哩_bilibili 2.前沿模…

机器学习中的K-均值聚类算法及其优缺点

K-均值聚类算法是一种常见的无监督学习算法,用于将数据集划分为K个不同的类别。该算法的目标是最小化数据点与其所属聚类中心之间的平均平方距离。下面分别介绍K-均值聚类算法的步骤和其优缺点。 K-均值聚类算法的步骤如下: 初始化K个聚类中心&#xf…

2024OD机试卷-分配土地(java\python\c++)

题目:分配土地 题目描述 从前有个村庄,村民们喜欢在各种田地上插上小旗子,旗子上标识了各种 不同的只数字。某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡…

电力电子技术——异步调制和同步调制

电力电子技术——异步调制和同步调制 在电力电子技术中,PWM(脉冲宽度调制)是一种常见的调节技术,可以用于控制电路中的电压或电流。异步调制和同步调制是两种常见的PWM调制方式,它们有着不同的原理和应用。 异步调制 异步调制(Asynchronous Modulation):异步调制是指…

前端性能优化篇之懒加载的概念、特点、实现原理、懒加载与预加载的区别

目录 懒加载的概念懒加载的特点懒加载的实现原理懒加载与预加载的区别 懒加载的概念 懒加载,也叫做延迟加载或按需加载,是一种用来优化网页性能的方法。在包含许多图片的长网页或应用中,如果一开始就加载所有图片,会导致页面加载…

Python无向图--邻接列表转为邻接矩阵表示

这段代码实现了一个简单的社交网络类 SocialNetwork,并提供了一些基本操作,如添加用户、用户之间的关注关系、获取关注者和正在关注的用户等功能。 总的来说,这段代码实现了一个简单的社交网络,提供了基本的用户管理和关系建立功…

如何基于Spring Boot项目从零开始打造一个基于数据库号段模式去中心化的分布式ID生成方案

一、前言 在当前系统开发过程中,单体架构的应用正在走向消亡,越来越多的应用开始分布式架构,在分布式架构设计过程中,有一个问题往往避免不了,就是分布式ID生成问题。 在常见解决方案中,有使用雪花算法或…

K8S探针分享

一,探针介绍 1 探针类型 livenessProbe:存活探针,用于判断容器是不是健康;如果探测失败,Kubernetes就会重启容器。 readinessProbe:就绪探针,用于判断是否可以将容器加入到Service负载均衡池…

Access2019直接将数据导入SQL Server数据库中,再直接链接回来

Access2019 的数据表等,除了通过 SSMA 导入数据库外,还可以利用access2019 自身的外部数据导出功能来达到目的。本文将详细介绍这一操作过程。 一、命令行操作阶段 1.以SA这一超级用户登录SQL Server,创建一个数据库,例如“个人…

网络安全培训对软件开发人员的重要性

微信搜索关注:网络研究观 阅读获取更多信息。 组织所经历的持续不断的网络威胁没有任何放缓的迹象,使得实现有效安全的任务变得越来越具有挑战性。 根据最新的 Verizon 数据泄露调查报告,2023 年高级攻击增加了 200% 以上。 IBM 数据泄露成…

阻塞IO下的echo实验

代码分析 echo代码位置:recipes-master/tpc/echo.cc echo_client.cc 服务端代码 int main(int argc, char* argv[]) {InetAddress listenAddr(3007);Acceptor acceptor(listenAddr);printf("Accepting... Ctrl-C to exit\n");int count 0;bool nodelay…