Python Selenium UI自动化_WebDriver元素_8大定位方式+总结(持续更新完善) Python中的继承、抽象基类和接口 Datawhale学习笔记【阿里云天池 金融风控-贷款违约预测】task1 赛题理解 Pytorch - torchvision计算机视觉工具库 linux 重点笔记 Ubuntu18.04安装ROS Melodic(一路到站型) 小甲鱼笔记:数据结构——线性表(一)线性表的顺序存储结构,线性表顺序存储结构的增,删,插入元素操作 实战比特币脚本编程(1) JAVA WEB DAY 01_Tomcat & Servlet Java基础算法之堆排序(Heap Sort) synchronized批量重偏向与批量撤销 终于等到了!阿里P8历时九个月整理,Java面试宝典,核心知识点笔记在此 “数字心脏”动态解析消费密码,国家级消费市场大数据联合实验室在上海先行先试 全世界运行着大约230亿台物联网设备,安全问题如何解? 物联网产业园&thinkplus解决方案中心国学讲座如期而至 都是程序员,凭什么他能站在鄙视链的顶端? 猛男必看!去小红书做程序员是种什么体验 drozer提示[Errno 2] No such file or directory 【STM32】NB-iOT BC35-G模块 AT指令应用设计指导(附代码) 【北京迅为】i.MX6ULL终结者编译LED汇编程序 Linux系统读写网卡PHY寄存器工具 洛谷:P1226 【模板】快速幂||取余运算(分治,数学) 【2020顶会KDD】AutoST:面向时空预测的高效神经网络学习模型 C/C++实现并查集disjoint_set的模板(带路径压缩优化) 实现一个百万级推送服务,除了它,还有谁 “健康守护者”——STM32标准库和HAL库的比较 程序员被公司辞退12天后,前领导要求回公司讲清代码,结果懵了 RTTR实现C++反射(1)集成rttr库 lotus node 远程运行 CCF历年4,5题收录 N卡 RTX3070/RTX3080/RTX3090挖矿算力推测 最高算力86MH 理论+实验:MySQL索引、事物与存储引擎 PostgreSQL JOIN 多表查询 TP框架实现Excel批量导入数据库数据 MySQL中的列转行 这次是真拯救了我,MySQL索引优化,explain讲得非常清楚了 Oracle快速入门(PLSQL编程) MySQL字符串拼接、截取 MySQL事务管理及存储引擎 《浪姐》万茜点赞宁静、郁可唯黑贴坐实?盗号者和程序员是背锅侠 程序员被公司辞退12天后,前领导要求回公司讲清代码,结果懵了 易语言大漠多线程foobar在游戏多窗口中时时显示输出信息 非科班,自学两年,复盘两个月,侥幸拿到头条、阿里offer 2020年全国数学建模大赛B题源代码以及模型的建立 (2) 2020年数学建模-校园供水系统智能管理 windows破解锁屏密码(亲测有效:再也不怕别人锁屏防你啦!) 清华大佬力荐的JVM学习路线+实战笔记+阿里真题,嚼碎吃透吊打面试官 打造多模块+高可用+高扩展Spring Cloud版分布式电商项目源码分享 Python爬虫入门教程 89-100 定个小目标,先用Python爬个一亿B站用户 五大分布式事务,你了解多少?
您的位置:首页 >开发 >

Python Selenium UI自动化_WebDriver元素_8大定位方式+总结(持续更新完善)

引包部分

from selenium.webdriver.chrome.webdriver import WebDriver#谷歌浏览器为例 from selenium.webdriver.common.by import By#本文采用“By.XXX”的方式 import time#经常需要强制等待、显式等待、隐式等待→等待页面元素布局刷新 self.dr=WebDriver#在测试类中实例化1个局部浏览器 GlobalDr=WebDriver#或者在测试类中实例化1个全局浏览器

8大定位方式

方式1:By.ID self.dr.find_element(By.ID,‘XXX’)#通过ID属性定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.ID, ‘XXX’)#通过ID属性定位多个元素,结果为列表 self.dr.find_elements(By.ID, ‘XXX’)[3]#通过ID属性定位多个元素中的第3个 此处需注意,python中列表索引从0开始,但驱动浏览器执行时,相关执行语言中索引是从1开始哦! 方式2:By.NAME self.dr.find_element(By.NAME,‘XXX’)#通过NAME属性定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.NAME, ‘XXX’)#通过NAME属性定位多个元素,结果为列表 self.dr.find_elements(By.NAME, ‘XXX’)[3]#通过NAME属性定位多个元素中的第3个 方式3:By.CLASS_NAME self.dr.find_element(By.CLASS_NAME,‘XXX’)#通过类名定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.CLASS_NAME, ‘XXX’)#通过类名定位多个元素,结果为列表 self.dr.find_elements(By.CLASS_NAME, ‘XXX’)[3]#通过类名定位多个元素中的第3个 方式4:By.TAG_NAME self.dr.find_element(By.TAG_NAME,‘XXX’)#通过标签名定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.TAG_NAME, ‘XXX’)#通过标签名定位多个元素,结果为列表 self.dr.find_elements(By.TAG_NAME, ‘XXX’)[3]#通过标签名定位多个元素中的第3个 方式5:By.LINK_TEXT self.dr.find_element(By.LINK_TEXT,‘XXX’)#通过超链接(a标签)的文本定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.LINK_TEXT, ‘XXX’)#通过超链接(a标签)的文本定位多个元素,结果为列表 self.dr.find_elements(By.LINK_TEXT, ‘XXX’)[3]#通过超链接(a标签)的文本定位多个元素中的第3个 方式6:By.PARTIAL_LINK_TEXT self.dr.find_element(By.PARTIAL_LINK_TEXT,‘XXX’)#通过超链接(a标签)的部分文本定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.PARTIAL_LINK_TEXT, ‘XXX’)#通过超链接(a标签)的部分文本定位多个元素,结果为列表 self.dr.find_elements(By.PARTIAL_LINK_TEXT, ‘XXX’)[3]#通过超链接(a标签)的部分文本定位多个元素中的第3个 方式7:By.CSS_SELECTOR(几乎万用,更切合前端CSS样式语言) self.dr.find_element(By.CSS_SELECTOR,‘XXX’)#通过CSS选择器定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.CSS_SELECTOR, ‘XXX’)#通过CSS选择器定位多个元素,结果为列表 self.dr.find_elements(By.CSS_SELECTOR, ‘XXX’)[3]#通过CSS选择器定位多个元素中的第3个 未完待续 方式8:By.XPATH(几乎万用,更切合后端XML语言) self.dr.find_element(By.XPATH,‘XXX’)#通过XPATH定位唯一元素,多个的话默认取第一个 self.dr.find_elements(By.XPATH, ‘XXX’)#通过XPATH定位多个元素,结果为列表 self.dr.find_elements(By.XPATH, ‘XXX’)[3]#通过XPATH定位多个元素中的第3个 未完待续

总结

1.个人推荐的定位方式的优先级: ID>NAME>LINK_TEXT>PARTIAL_LINK_TEXT>CLASS_NAME>TAG_NAME>CSS_SELECTOR>XPATH PS:其实有些公司为了脚本维护方便,人员交流方便,要求员工统一格式,都使用XPATH或者CSS_SELECTOR,博主之前上班的公司就要求全员使用By.XPATH定位。(其实这样也好,一招鲜,吃遍天,方便了那些有选择困难症的小伙伴,比如博主我) 未完待续

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。