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

Python自动化测试之selenium - 元素定位

元素定位

元素定位就是通过元素的信息或者元素层级结构来定位元素。当定位到了重复的属性,默认会定位到第一个标签。

id定位 - find_element_by_id

同一个html页面中id值是唯一的。

模拟在百度输入框中输入想要查找的内容

 

python

代码解读

复制代码

from selenium import webdriver import time ​ ​ driver = webdriver.Chrome() driver.get("http://www.baidu.com") inp = driver.find_element_by_id("kw")  # 通过id定位元素 - 定位到输入框 inp.send_keys("蜡笔小新")  # 针对输入框进行输入操作 time.sleep(2) driver.quit()

name定位-find_element_by_name

通过元素的name属性值进行元素定位,该属性是可以重复的。

 

arduino

代码解读

复制代码

find_element_by_name      # name属性

classname定位-find_element_by_class_name

通过元素的class属性进行元素定位,参数是其中一个属性值,不能使用所有属性值进行定位

 

bash

代码解读

复制代码

find_element_by_class_name  # 类名

tag_name定位

通过元素的标签名称进行定位,同一个html页面中相同元素有很多。

 

bash

代码解读

复制代码

find_element_by_tag_name  # 通过标签名

link_text定位-find_element_by_link_text

通过超链接的全部文本信息进行定位。

 

ini

代码解读

复制代码

from selenium import webdriver import time ​ ​ driver = webdriver.Chrome() driver.get("https://www.baidu.com") res = driver.find_element_by_link_text("新闻")  # 通过a标签定位元素,重复的话默认定位第一个 res.click()  # 点击操作 time.sleep(2) driver.quit() ​

partical_link_text定位 - find_element_by_partical_link_text

通过超链接的局部文本信息进行定位。也就是进行模糊匹配

 

arduino

代码解读

复制代码

driver.find_element_by_partical_link_text("新闻")

定位一组元素 - find_elements_by_xxx

可以解决定位到多个元素如何获取所有的重复的元素。注意多了一个s哦~

定位一组元素返回的值是一个列表,即可以通过索引进行获取指定的元素。

 

ini

代码解读

复制代码

from selenium import webdriver import time ​ ​ driver = webdriver.Chrome() driver.get("https://www.baidu.com") res = driver.find_elements_by_tag_name("a")  # 通过a标签定位元素,结果是一个列表 print(res[0]) time.sleep(2) driver.quit()

xpath元素定位

XPath是XML Path的简称,是一门在XML文档中查找元素信息的语言,xpath可以使用工具生成。

 

python

代码解读

复制代码

from selenium import webdriver import time ​ ​ driver = webdriver.Chrome() driver.get("https://cn.bing.com/") res = driver.find_element_by_xpath('//*[@id="sb_form_q"]')  # 通过a标签定位元素,结果是一个列表 res.send_keys('蜡笔小新')  # 获取标签的文本内容 id time.sleep(2) driver.quit() ​

Xpath定位策略find_element_by_xpath(xpath表达式)

最常用的定位方式

路径定位:

绝对路径:表达式以/html开头,元素的层级之间以/分隔,相同层级的元素可以使用索引,索引从1开始,找到元素需要经过所有的层级元素比如/html/body/div/form/p[1]/input

相对路径:匹配任意层级的元素,以//tag_name或者//*开头,*表示所有的标签

属性定位:最好能够通过属性定位到唯一的元素

xpath表达式://*[@属性名=属性值]

比如//input[@value='取消']

属性与逻辑结合:同时满足多个条件

xpath表达式://tag_name[@属性名=属性值 and @属性名=属性值]

属性与层级结合:

xpath表达式://tag_name[@属性名=属性值]/tag_name[@属性名=属性值]

通过全部文本内容进行定位

xpath表达式://*[test()='文本内容']

元素的某个属性值包含value

xpath表达式://*[contains(@属性名,'属性值的一部分')]

css定位

介绍

使用的方法是find_element_by_css_selector(css选择器表达式)

一般不常用,可能不能精确定位。多种属性可以组合使用

id选择器

表达式:#id表示#id值

 

ini

代码解读

复制代码

driver = webdriver.Chrome() driver.get("https://cn.bing.com/") res = driver.find_element_by_css_selector('#sb_form_q')

class选择器

表达式:.class表示.其中一个属性值

元素选择器 - 不推荐使用

表达式:tagname

会定位到多个,因此不推荐使用

属性选择器

表达式:[属性名=属性值]

层级选择器
  • 后代选择器 - 空格表示后代选择器
 

css

代码解读

复制代码

div span - 表示div内部的span标签

  • 儿子选择器 - >表示儿子关系,内部第一层
 

css

代码解读

复制代码

div > span - 表示div内部第一层的span标签

  • 毗邻选择器 - +表示毗邻关系,毗邻关系:同级别紧挨着的下一个标签
 

css

代码解读

复制代码

div + span - 表示紧挨着div的同级别的span标签

  • 弟弟选择器 - ~表示弟弟关系,弟弟关系:同级别的所有标签
 

css

代码解读

复制代码

div ~ span - 表示和div同级别的span标签

元素定位的另一种写法

 

ini

代码解读

复制代码

from selenium.webdriver.common.by import By ​ res = driver.find_element(by=By.CSS_SELECTOR, value='#sb_form_q') res = driver.find_element(By.XPATH, '#sb_form_q') res = driver.find_element(By.ID, '#sb_form_q') res = driver.find_element(By.CLASS_NAME, '#sb_form_q') res = driver.find_element(By.NAME, '#sb_form_q') res = driver.find_element(By.TAG_NAME, '#sb_form_q') res = driver.find_element(By.LINK_TEXT, '#sb_form_q')

案例:

 

python

代码解读

复制代码

from selenium import webdriver from selenium.webdriver.common.by import By import time ​ ​ driver = webdriver.Chrome() driver.get("https://cn.bing.com/") res = driver.find_element(By.CSS_SELECTOR, '#sb_form_q')  # 通过a标签定位元素,结果是一个列表 res.send_keys('蜡笔小新')  # 获取标签的文本内容 id time.sleep(2) driver.quit() ​

  这是我整理的《2024最新Python自动化测试全套教程》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)

相关文章:

Python自动化测试之selenium - 元素定位

元素定位 元素定位就是通过元素的信息或者元素层级结构来定位元素。当定位到了重复的属性,默认会定位到第一个标签。 id定位 - find_element_by_id 同一个html页面中id值是唯一的。 模拟在百度输入框中输入想要查找的内容 python 代码解读 复制代码 from sel…...

深入探索 npm cache clean --force:清理 npm 缓存的艺术

npm 是 JavaScript 编程语言的包管理器,它是 Node.js 运行环境的默认包管理器。npm 提供了一个丰富的生态系统,包括数以百万计的可重用代码包。然而,随着时间的推移,npm 的缓存可能会变得庞大,影响性能或导致一些奇怪的…...

如何看待“低代码”开发平台的兴起?

如何看待“低代码”开发平台的兴起? 近年来,“低代码”开发平台如雨后春笋般涌现,承诺让非专业人士也能快速构建应用程序。这种新兴技术正在挑战传统软件开发模式,引发了IT行业的广泛讨论。低代码平台是提高效率的利器&#xff0…...

自动控制——过阻尼、欠阻尼、临界阻尼及无阻尼

自动控制——过阻尼、欠阻尼、临界阻尼及无阻尼 引言 在自动控制系统和振动分析中,系统的阻尼特性对于系统的动态响应至关重要。阻尼决定了系统在受到扰动或输入信号后,如何恢复到稳定状态。本文将详细介绍过阻尼(overdamped)、…...

从AlphaGo到AlphaPong:AI乒乓球机器人将如何改变乒乓球竞技?

在人工智能领域,谷歌DeepMind的AlphaGo曾以其超凡的围棋能力震惊了世界。而如今,DeepMind又将其技术延伸到了乒乓球领域,推出了乒乓球机器人,被网友戏称为“AlphaPong”。这一机器人使用ABB的IRB1100机械手臂,能够与普…...

荒原之梦:考研期间可以玩游戏吗?

有不少同学,特别是男同学,在考研之前,会有玩游戏的习惯,那么,对于考研的同学来说,就会产生这样一个疑问。在考研备考期间,我还可以玩游戏吗? 其实关于这个问题的答案是因人而异的&am…...

Hive SQL ——窗口函数源码阅读

前言 使用Starrocks引擎中的窗口函数 row_number() over( )对10亿的数据集进行去重操作,BE内存溢出问题频发(忘记当时指定的BE内存上限是多少了.....),此时才意识到,开窗操作,如果使用 不当,反而…...

用python的Manim 创建大括号

Brace 是 Manim 中用于创建大括号(curly braces)的一个对象类。它有几个子类,自定义了不同的功能。下面是每个类的简要解释: 1. ArcBrace 功能: 创建一个环绕弧线的括号。适用于需要围绕弧形线条的场景。用法: 通常用于图形中有…...

白骑士的Matlab教学附加篇 5.2 代码规范与最佳实践

系列目录​​​​​​​ 上一篇:白骑士的Matlab教学附加篇 5.1 MATLAB开发工具 在 MATLAB 编程中,遵循良好的代码规范和最佳实践有助于提高代码的可读性、可维护性和可重用性。无论是变量命名、注释风格,还是代码格式化,合理的规…...

Javaweb--SpringBoot

1.SpringBoot入门 简化Spring开发的一个框架,Spring Boot 旨在帮助开发者快速搭建 Spring 框架。 整个Spring的一个合集,可以简化配置 2.微服务 (1)微服务就是一种架构风格 (2)微服务就是把一个项目拆…...

【数据结构】算法的时间复杂度与空间复杂度

计算机考研408-数据结构笔记本之——第一章 绪论 1.2 算法和算法评价 1.2.2 算法效率的度量 算法效率的度量是通过时间复杂度和空间复杂度来描述的。 1.空间复杂度 算法的空间复杂度S(n)定义为该算法所需的存储空间,它是问题规模n的函数,记为 S(n) …...

PyCharm环境python开发上位机

目录 前言: 一、pycharm新建工程 1、打开 pycharm软件,新建工程 二、配置UI界面 1、新建UI界面 1)创建 Main Window 2)拖动控件到 MainWindow 中 3)设置信号与槽 4)ctrlS 保存ui文件 2、将ui文件转…...

ROS 2 参数使用

ROS 2 参数使用 介绍 ROS 2 (Robot Operating System 2) 是一个为机器人开发提供支持的开源框架。它继承了 ROS 1 的优点,并且在架构上做了许多改进以支持分布式系统、实时性、安全性等要求。ROS 2 中的参数是用于配置节点行为的关键部分,允许我们动态…...

QT的Model-View实现大批量数据展示

一、完整源代码 1.项目结构 2.各文件代码展示 define.h #pragma once #include <QVector>//学生信息 typedef struct _STUDENT {QString name; //姓名int score1; //语文成绩int score2; //数学成绩int score3; //外语成绩_STUDENT(){name ""…...

2024年8月7日(mysql主从 )

回顾 主服务器 [rootmaster_mysql ~]# yum -y install rsync [rootmaster_mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar [rootmaster_mysql ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz [rootmaster_mysql ~]# cp -r mysql-8.0.33-linux-glibc2.…...

接口/自动化测试 面试集合

1. apache和nginx的区别? Nginx相对Apache的优点: 轻量级&#xff0c;同样起web服务&#xff0c;比apache占用更少的内存及资源; 抗并发&#xff0c;nginx处理请求是异步非阻塞的&#xff0c;支持更多的并发连接&#xff0c;而apache则是阻塞型的&#xff0c;在高 并发下ngi…...

菜鸡勇闯第136场双周赛

菜鸡鼓足了勇气报名了力扣双周赛&#xff08;后来复盘才知道双周赛更难一点&#xff0c;我真是头铁。。&#xff09; 没想到还拿了个竞赛名次哈哈哈哈哈还在前50%&#xff0c;小力它真的&#xff0c;我哭死 为什么我本科被高数老师忽悠&#xff0c;去打了两年数模o(≧口≦)o 每…...

趋动科技陈飞:从小模型到大模型,AI时代下的数据中心建设

自AI大模型横空出世&#xff0c;不断推动着AI从学术界到产业界向大众破圈&#xff0c;新的时代正在来临。11月15-16日&#xff0c;由CDCC主办的“2023第11届数据中心标准大会”在北京国家会议中心盛大开幕。 本届大会的主题围绕“AI时代 重塑未来”&#xff0c;聚焦数据中心领…...

yolo v8 + flask部署到云服务器,以及问题记录

环境安装 1、运行项目报错&#xff1a;no python application found, check your startup logs for errors 在云服务器pytorch版本安装错了&#xff0c;安装了GPU版本&#xff0c;需要安装CPU版本 # CPU only 使用下面这段代码避免出现第二个错误 pip install torch2.3.1 to…...

【科研必备插件】easyscholar如何使文章显示期刊影响因子与分区等级

简要介绍 EasyScholar 是一个微软 Edge 浏览器的扩展程序&#xff0c;可以显示会议、期刊等级。可支持在各大论文搜索网站&#xff0c;显示各种期刊、会议等级排名 要想你的知网页面如下图所示&#xff0c;快来获取安装&#xff0c;快速科研有方法 插件安装教程 ①打开浏览器…...

Vulnhub-DC-1

1.信息收集 使用工具nmap扫描主机端口 这是Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成 Web指纹扫描 发现是&#xff1a;drupal…...

使用TaotokenCLI工具一键配置开发环境中的API密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置开发环境中的API密钥 在团队协作或个人开发中&#xff0c;为每个项目或成员手动配置大模型API密钥和…...

账务台账数据

银行里说的 “账务台账数据”&#xff0c;本质就是按会计规则把每笔业务逐笔、分户、分科目记下来的完整明细流水 余额 辅助信息&#xff0c;核心是 “可逐笔追溯、可对账、可审计” 的一套明细数据。下面用通俗、具体的方式拆开说&#xff1a;一、银行 “账务台账” 到底是什…...

php有什么版本,php语言有几个版本

php有什么版本,php语言有几个版本PHP的大版本主要分四支&#xff1a;PHP4/PHP5/PHP6/PHP7 其中&#xff0c;PHP4由于太古老、对OO支持不力已基本被淘汰&#xff0c;请无视PHP4。 PHP6由于基本没有生产线上的应用&#xff0c;还基本只是一款概念产品&#xff0c;很多功能已在PHP…...

Python-for-Android 完整指南:5分钟将Python应用打包为Android APK

Python-for-Android 完整指南&#xff1a;5分钟将Python应用打包为Android APK 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android Python-for-Android&#xff0…...

3大技术突破:重新定义Switch游戏安装性能极限

3大技术突破&#xff1a;重新定义Switch游戏安装性能极限 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer是一款专为破解版Nintendo…...

使用Taotoken CLI工具一键配置多开发环境下的统一模型接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置多开发环境下的统一模型接入点 在团队协作或管理多个AI应用项目时&#xff0c;一个常见的痛点是每个…...

3大突破性功能:用HiveWE革新你的魔兽争霸III地图创作体验

3大突破性功能&#xff1a;用HiveWE革新你的魔兽争霸III地图创作体验 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为传统魔兽争霸III编辑器缓慢的加载速度和复杂的操作界面而烦恼吗&#xff1f;Hive…...

基于Shapley值与随机森林的印度CPI通胀预测与特征重要性分析

1. 项目概述与核心价值在宏观经济预测领域&#xff0c;通胀预测的准确性直接关系到货币政策制定、市场预期管理乃至社会民生稳定。传统的计量经济学模型&#xff0c;如基于菲利普斯曲线的线性回归&#xff0c;虽然具有良好的可解释性&#xff0c;但在捕捉现实世界中复杂、非线性…...

免费解锁八大网盘限速!LinkSwift直链下载助手终极指南

免费解锁八大网盘限速&#xff01;LinkSwift直链下载助手终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...