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

背景 

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.mzph.cn/web/4959.shtml

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

相关文章

【智能优化算法】蚱蜢优化算法(Grasshopper Optimization Algorithm,GOA)

蚱蜢优化算法(Grasshopper Optimization Algorithm,GOA)是期刊“IEEE Access”(IF 3.9)的2021年智能优化算法 01.引言 蚱蜢优化算法(Grasshopper optimization algorithm, GOA),并将其应用于结构优化中的挑战性问题。该算法在数学…

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

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

Linux的docker基础知识

centOS7安装 yum install docker -y systemctl start docker systemctl enable dockerkali安装 # 添加docker的gpg密钥,签名用的 curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -# 添加docker的清华大学apt镜像…

Microsoft Edge浏览器:高效、简洁、个性化的网页浏览体验

Microsoft Edge是微软公司推出的一款网络浏览器,它是基于Chromium开源项目开发的,因此与Google Chrome有很多相似之处。以下是一些使用Microsoft Edge的心得体会: 1. 界面简洁:Microsoft Edge的界面设计非常简洁,用户…

华为od入职第13天!

今天早上就分配活了,写一个模块的ut,但是今天一句代码没写成,一直在看代码逻辑。下午就是新员工的一个会,部门20来个人做一下自我介绍啥的。晚上我导师给我们几个新员工讲项目框架和一些代码逻辑啥的,讲了一个多小时&a…

区块链技术与应用学习笔记(5-7节)——北大肖臻课程

​ 目录 ​BTC实现 基于交易的账本模式: UTXO集合: 交易费用: BTC网络 1.应用层: 2.网络层: 3传播层: 什么是鲁棒? BTC挖矿: 出块奖励: 挖矿难度调整&#…

Python | Leetcode Python题解之第51题N皇后

题目: 题解: class Solution:def solveNQueens(self, n: int) -> List[List[str]]:def generateBoard():board list()for i in range(n):row[queens[i]] "Q"board.append("".join(row))row[queens[i]] "."return b…

ChatGPT使用指南:Prompt简单提示词

在使用ChatGPT或其他基于AI的聊天模型时,有效地构建prompt(提示词或指令)是非常重要的。好的prompt可以帮助模型更准确地理解您的需求,并提供更贴切的回答。以下是一些构建高效prompt的技巧和示例。 1. 明确具体 当您向ChatGPT提…

yolo3的实现流程是怎样的?

YOLOv3(You Only Look Once version 3)是一种流行的目标检测算法,它的实现流程大致如下: 1. 输入图像:YOLOv3 接受一张输入图像,并将其送入一个卷积神经网络(CNN)。 2. 特征提取&a…

【C语言刷题系列】对数字添加逗号

目录 一、问题描述 二、解题思路 三、源代码 拓展: 个人主页: 倔强的石头的博客 系列专栏 :C语言指南 C语言刷题系列 一、问题描述 二、解题思路 题目的要求,即对于一个较大的整数,每三位数字之间添加…

CSS + HTML

目录 一.CSS(层叠样式表) 二. CSS 引入方式 三.选择器 3.1 标签选择器 3.2 类选择器 3.3 id选择器 3.4 通配符选择器 3.5 画盒子 四.文字控制属性 4.1字体大小 4.2字体粗细 4.3 字体倾斜 4.4行高 4.5行高--垂直居中 4.6 字体族 4.7 字体复…

使用mmdetection来训练自己的数据集(visdrone)(四)结果分析

测试 python tools/test.py <your-config-file> <your-model-weights-file> --out <save-pickle-path>关于test.py 的命令行 parser.add_argument(--out,typestr,helpdump predictions to a pickle file for offline evaluation)计算量、参数量计算脚本 pyth…

考研数学精选题目016

题目 ∫ x 4 x 6 1 d x \int {{{{x^4}} \over {{x^6} 1}}dx} ∫x61x4​dx 来源 魏姐姐的积木法 思考 在做积分题时&#xff0c;若遇到不会积分的&#xff0c;我们可以考虑先积简单&#xff08;形式和原式一样&#xff09;的积分&#xff1a; ∫ x 6 1 x 6 1 d x x C ( 1 …

【自然语言处理】Word2VecTranE的实现

作业一 Word2Vec&TranE的实现 1 任务目标 1.1 案例简介 Word2Vec是词嵌入的经典模型&#xff0c;它通过词之间的上下文信息来建模词的相似度。TransE是知识表示学习领域的经典模型&#xff0c;它借鉴了Word2Vec的思路&#xff0c;用“头实体关系尾实体”这一简单的训练目…

【Linux】dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

[30116] Error loading Python lib /tmp/_MEIlvdUu6/libpython3.8.so.1.0: dlopen: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found (required by /tmp/_MEIlvdUu6/libpython3.8.so.1.0)1 cd到指定路径 cd /usr/local 2 下载 wget http://ftp.gnu.org/gnu/gl…

Ant Design助力:实现用户列表的优雅展示与管理

文章目录 概要前端讲解登录组件注册组件用户列表组件 后端讲解连接数据库db.js路由routes.jsexpress应用app.js 启动项目小结 概要 在上一篇博客&#x1f6aa;中&#xff0c;我们已经成功实现了登录注册系统的基本功能。现在&#xff0c;我们将进一步完善系统&#xff0c;实现…

大型语言模型:奇迹背后的未知哲学,人类智慧的边界探索

大型语言模型可以做出令人瞠目结舌的事情。但没有人确切知道原因。 这是一个问题。弄清楚它是我们这个时代最大的科学难题之一&#xff0c;也是控制更强大的未来模型的关键一步。 多长时间才能学会加法&#xff1f; 两年前&#xff0c;旧金山 OpenAI 公司的研究人员尤里布尔…

ABAP Visual Code 新建sap系统连接

本文主要介绍如何新建SAP前端系统链接 前提是你已经都扩展完了 1.点击SAP fiori--》点击新建 2.选择 abap on premise 3.输入如下信息 4.这里介绍下URL 如何获取 SMICM-->点击service 明细里面可以看到你的host name 和 port 当然你也可以随便找一个你的odata 服务看下ur…

C++之const

const是C中的关键字&#xff0c;又叫常量限定符&#xff0c;作用是告知编译器const修饰的变量是不可修改的。 1、const修饰常量 1.1、修饰常量 #include <iostream> using namespace std;int main(int argc, char argv[]) {// 在修饰常量时&#xff0c;int const和con…

C++奇迹之旅:类和对象const成员static关键字友元内部类

文章目录 &#x1f4dd;const成员&#x1f320; const 成员函数是什么&#xff1f;&#x1f320; 取地址及const取地址操作符重载 &#x1f309;static成员&#x1f320;概念&#x1f320;static特性&#x1f309;static小题 &#x1f320;友元&#x1f309; 友元函数&#x1f…