招标网站靠谱吗,今日头条新闻视频,珠海建设网站公司,做外贸需要哪些网站有哪些世界上最远的距离大概就是明明看到一个页面元素站在那里#xff0c;但是我却定位不到#xff01;#xff01;
Selenium定位元素的方法有很多种#xff0c;像是通过id、name、class_name、tag_name、link_text等等#xff0c;但是这些方法局限性太大#xff0c; 随着自动…世界上最远的距离大概就是明明看到一个页面元素站在那里但是我却定位不到
Selenium定位元素的方法有很多种像是通过id、name、class_name、tag_name、link_text等等但是这些方法局限性太大 随着自动化测试的深入和不同框架要求会发现上面的定位方式无法解决一些元素定位。尤其对于这样一些元素
1、没有id、name、class等属性;
2、标签的属性或文本信息特征没有或者不明显
3、标签嵌套复杂层次太多等。
所以这些方法了解一下即可我们真正需要熟练掌握的是通过xpath和css定位一般只要掌握一种就可以应对大部分定位工作了。
CSS定位方式和XPATH定位方式基本相同只是CSS定位表达式有其自己的格式。CSS定位方式拥有比XPATH定位速度快且比XPATH稳定的特性。下面详细介绍CSS定位方式的使用方法
那这里我跟大家分享如何通过css定位元素css定位元素的方法是 find _element_by_css_selector
如下是百度首页html代码 1.css定位通过绝对路径定位
什么是绝对路径绝对路径其实就是从开始标签html一级一级找到目标元素上下级元素分隔符为或者空格
例如通过css绝对路径定位百度输入框并输入内容检索代码如下
from selenium import webdriver
import time
# 打开浏览器
driverwebdriver.Chrome()
# 加载项目地址百度
driver.get(http://www.baidu.com)
time.sleep(3)
#定位百度输入框
driver.find_element_by_css_selector(html body div div div div div form span input).send_keys(小龙女)
driver.find_element_by_css_selector(htmlbodydivdivdivdivdivformspaninput).send_keys(小龙女)
复制代码
2.css定位通过id或class定位
id选择器符号#class选择器符号.还是刚才案例通过id或者class定位代码如下
# 通过id定位
driver.find_element_by_css_selector(#kw).send_keys(小龙女)
#class进行定位
4driver.find_element_by_css_selector(.s_ipt).send_keys(小龙女)
复制代码 3.通过属性或者部分属性定位
css定位可以通过除元素id、class以外的其他属性或者通过多个属性唯一定位元素也可以通过部分属性值来定位。通过部分属性定位有这么些常规匹配符以字符^指明从字符串的开始匹配以字符以字符*指明在需要进行模糊查询以字符$指明在字符串的结尾匹配代码如下
driver.find_element_by_css_selector([autocompleteoff]).send_keys(小龙女)
driver.find_element_by_css_selector([autocompleteoff][namewd ]).send_keys(小龙女)
# 4通过部分属性值定位
driver.find_element_by_css_selector([autocomplete^o][namewd]).send_keys(小龙女)
driver.find_element_by_css_selector([autocomplete*f]).send_keys(小龙女)
driver.find_element_by_css_selector([autocomplete$f]).send_keys(小龙女)
复制代码
4.通过层级定位
层级定位一般很难唯一定位到元素一般情况下层级跟id/class/属性或者部分属性值一起组合定位
driver.find_element_by_css_selector(formspaninput).send_keys(小龙女)
driver.find_element_by_css_selector(form.fmspaninput.s_ipt).send_keys(小龙女)
driver.find_element_by_css_selector(formspaninput#kw).send_keys(小龙女)
复制代码
5.通过兄弟节点定位
什么是兄弟节点就是同一父级元素下存在多个相同子标签那么这些子元素就是兄弟节点比如像下面这个html代码 如何来定位这些兄弟节点呢定位第一个元素first-child,定位第2/3/4...N位置元素则用nth-child(n),定位最后一个元素last-child代码如下
# 6)通过兄弟节点定位
driver.find_element_by_css_selector(div#u1 a:first-child).click()
driver.find_element_by_css_selector(div#u1 a:nth-child(3)).click()
driver.find_element_by_css_selector(div#u1 a:last-child).click()
复制代码 总结
目前为止已经整理了自动化测试PythonSelenium中对于web测试定位页面元素的两种主流也是最好的定位方式XPATH和CSS定位方式在我个人看来两个方式都很不错效率都很高也很容易解决日常工作中的问题也能够减少页面的变动对于脚本的维护成本当然不同问题还需要不同的方式解决能解决问题的方法都是好方法希望以后的日子对于定位元素不再是难题。下面我们对这两种定位方式大概做个对比 XPATH定位和CSS定位很相似XPATH功能更强大一些吧但CSS定位方式执行速度更快鉴于某些浏览器不支持CSS定位方式并且一般在自动化测试实施过程中使用xpath定位方式要比css更普遍所以建议大家先掌握xpath。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走【文末领取】 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图全套资料】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战
四、App自动化项目实战 五、一线大厂简历
六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试 九、总结文末尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到