selenium环境+元素定位大法

2023-09-18 14:32:36

selenium 与 webdriver

Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器

WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。

使用这套API可以操控浏览器的开启、关闭,打开网页,操作界面元素,控制Cookie,还可以操作浏览器截屏、安装插件、设置代理、配置证书等

环境搭建

1、为 Python 安装 selenium模块,pip install selenium

2、下载对应浏览器驱动

Chromedriver

使用 selenium 访问百度并搜索

图片

反爬虫设置

在这里插入图片描述

ui 自动化操作流程

选择界面元素

根据元素的特征:ID,Name,Class,Tag,等

根据元素特征和关系:css,xpath

操作界面元素

输入操作:点击、输入文字、拖拽等

输出操作:获取元素的各种属性

根据界面上获取的数据进行分析和处理

元素定位大法

1、find_element_by_id:通过ID进行匹配查找,只返回匹配到的一个元素

2、find_element_by_name:通过name进行匹配查找,只返回匹配到的一个元素

3、find_element_by_xpath:通过xpath进行匹配查找,只返回匹配到的一个元素

4、find_element_by_link_text:通过链接内容进行匹配查找,只返回匹配到的一个元素

5、find_element_by_partical_link_text:通过部分链接内容进行匹配查找,只返回匹配到的一个元素

6、find_element_by_tag_name:通过标签名称进行匹配查找,只返回匹配到的一个元素

7、find_element_by_class_name:通过class名称进行匹配查找,只返回匹配到的一个元素

8、find_element_by_css_selector:通过CSS选择器进行匹配查找,只返回匹配到的一个元素

值得注意的是,上面方法只会匹配查找只会获取第一个元素。除了上面这些查找单个元素的方法之外,Selenium还定义查找多个元素的方法:

1、find_elements_by_name:通过name进行匹配查找,返回所有匹配到的元素列表

2、find_elements_by_xpath:通过xpath进行匹配查找,返回所有匹配到的元素列表

3、find_elements_by_link_text:通过链接内容进行匹配查找,返回所有匹配到的元素列表

4、find_elements_by_partical_link_text:通过部分链接内容进行匹配查找,返回所有匹配到的元素列表

5、find_elements_by_tag_name:通过标签名称进行匹配查找,返回所有匹配到的元素列表

6、find_elements_by_class_name:通过class名称进行匹配查找,返回所有匹配到的元素列表

7、find_elements_by_css_selector:通过CSS选择器进行匹配查找,返回所有匹配到的元素列表

图片

图片

图片

注意:

1、根据 class_name 进行定位的时候,有时候会遇到复合类,也就是 class 属性中间有空格,class 属性比较特殊,class属性中间的空格是间隔符号,表示的是一个元素有多个class的属性名称,此时元素定位的时候任取一个即可(不保证唯一定位)
2、selenium 没有提供判断元素是否存在的功能,所以当你需要判断一个元素存不存在的时候,直接定位可能会报错。我们可以去匹配一个元素列表,列表为空则元素不存在,列表不为空则元素存在

技巧,在进行元素定位的时候,有时会遇到一些特别难以定位的元素,此时你可以使用下边这种模式,分步骤定位,一步步缩小定位范围
ele = driver.find_elements_by_xpath(“//div[@id=‘category-block’]//ol/li”)
b = ele.find_elements_by_xpath(‘.//li[@class=‘subcate-item’]//span’)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

更多推荐

算法(三)

哈希表算法章节(1)Ascall码文章推荐给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。classSolution{publicbooleanisAnagram(Strings,Stringt){//先说明一下字母异位词的定义://两

IBM存储设备

因工作的原因,本人以前在国内某大型金融机构工作,机器全是采购的IBM小型机,有X系列,有P系列。它们有一些特性,我总结了一下,分享出来,供大家选型参考。1.RAID控制器双活动型热插拔控制器,硬件XOR引擎2.缓存每个控制器2GB缓存;具备写缓存断电保护,系统外部断电后,写缓存数据可永久保留到闪存盘上3.主机接口提供≥

Zookeeper集群 + Kafka集群

kafka不能离开,需要通过zookeeper来管理定义Zookeeper是一个开源的分布式服务管理框架,存储业务服务节点元数据及状态信息,并把在Zookeeper上注册的服务器节点的状态信息通知给客户端(Zookeeper=文件系统+通知机制)工作机制☆☆☆☆☆从设计模式角度来理解:是一个基于观察者模式设计的分布式服

7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位

随着IT行业的发展,产品愈渐复杂,web端业务及流程更加繁琐,目前UI测试仅是针对单一页面,操作量大。为了满足多页面功能及流程的需求及节省工时,设计了这款UI自动化测试程序。旨在提供接口,集成到蜗牛自动化测试框架,方便用例的设计。目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代。

Javascript中怎么使用map?

在JavaScript中,map()是一个用于数组的高阶函数,用于遍历数组中的每个元素并对每个元素执行一个指定的操作,然后将操作的结果存储在一个新数组中。以下是如何使用map()方法的基本语法:constnewArray=array.map(callback(currentValue[,index[,array]])[

什么是短路表达式?

短路表达式是一种在编程中常用的逻辑运算方式。它利用了逻辑运算符的特性,当满足某个条件时,就会停止继续执行后面的逻辑判断。在大多数编程语言中,短路表达式主要使用逻辑与(&&)和逻辑或(||)两个运算符。短路表达式的作用有以下几点:提高效率:当使用逻辑与(&&)运算符时,如果第一个操作数为假(false),则整个表达式必定

Haproxy负载均衡群集

HAproxy搭建Web群集一、Web集群调度器1、常见的Web集群调度器2、常用集群调度器的优缺点(LVS,Nginx,Haproxy)2.1Nginx2.2LVS2.3Haproxy3、LVS、Nginx、HAproxy的区别二、Haproxy1、简介2、Haproxy应用分析3、HAProxy的主要特性4、Hap

Postman应用——测试脚本Test Script

文章目录TestScript脚本CollectionFolderRequest解析响应体断言测试测试脚本可以在Collection、Folder和Request的Pre-requestscript和Testscript中编写,测试脚本可以检测请求响应的各个方面,包括正文、状态代码、头、cookie、响应时间等,只有测试

Hadoop源码阅读(三):HDFS上传

说明:1.Hadoop版本:3.1.32.阅读工具:IDEA2023.1.23.源码获取:Indexof/dist/hadoop/core/hadoop-3.1.3(apache.org)4.工程导入:下载源码之后得到hadoop-3.1.3-src.tar.gz压缩包,在当前目录打开PowerShell,使用tar-

【springMvc】自定义注解的使用方式

🎬艳艳耶✌️:个人主页🔥个人专栏:《Spring与Mybatis集成整合》⛺️生活的理想,为了不断更新自己!1.前言1.1.什么是注解Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进

CSS动效合集之实现气泡发散动画

前言👏CSS动效合集之实现气泡发散动画,速速来Get吧~🥇文末分享源代码。记得点赞+关注+收藏!1.实现效果2.实现步骤定义一个数组bubbles,用来存储气泡列表的基本新,w表示宽高,x表示绝对定位中left的百分比注:以下代码基于vueconstbubbles=ref([{w:8,x:10,},{w:9,x:5

热文推荐