1、ID
1、Chromedriver的版本问题
如果出现版本不匹配,不支持,换一个Chromedriver的版本
2、8大元素定位
id/name/classs_name/link_text/partical_link_text/tagname
1、只有ID是唯一的,能用id就用
2、name,用户交互关系,input\select\textarea
3、class_name经常用来进行元素定位,坑
通过class_name中间定位元素,不能有空格,只能提取其中某一个值。
在HTML当中找到需要操作的元素。
python如何查找元素:根据特征
find_element_by…找到多个元素,只会返回找到的第一个元素
find_elements会找到多个元素,返回的是一个list,一个或多个webelement对象
ID:可能是动态变化的
警惕:ID中包含数字
ID中包含不规则字母或者数字
简单的字母,一般就不会变动。
其他name等方式同理。
5种元素定位方式存在的问题:
元素定位不精确,可能出现多个
解决思路:1、通过browser.find_elements找到多个,通过索引去确定
2、不仅tagname叫a,而且name=**,而且class_name组合条件的方式进行范围的缩小
1、xpath
2、css
xpath即为xml路径语言(xml path language),一种用来确定xmlwe文档中某部分位置的语言:
1、获取xpath表达式
2、Ctrl+f 输入表达式
3、文件路径
4、chrpath
5、标签名【谓语条件】/子节点
绝对定位和相对定位
xpath
1、绝对路径(从根目录开始)
2、相对路径
selenium的使用:
chromedriver.exe指定驱动位置:
浏览器操作
浏览器属性
xpath的class定位
#1、ID的唯一性非常明显,查找到的元素是一个webelement的对象,
#如果没有找到,报错,NoSuchElementException
input_element=browser.find_element_by_id("kw")
#如果输入内容,输入set_keys()
input_element_send_keys("柠檬班")
#2、通过name属性去定位
elem=browser.find_element_by_name("wd")
elem.send_keys("lemonban")
#3、通过class
browser.find_element_by_class_name("")
#4、通过tagname,标签名称,查找的元素不具备唯一性
browser.find_element_by_tag_name("")
#5、专门用来定位a标签\linktext
e=browser.find_element_by_linktext("新闻")
e.click()
#6、partical_link_text
e=browser.find_element_by_partical_link_text
#7.xpath
# xpath分为相对路径和绝对路径
#8.css选择器
xpath
xpath的函数写法:
文本内容定位:
面试题:1、在web自动化测试中,使用selenium有木有通过text文本进行定位的方式?答:1、path
1、在web自动化测试中,使用selenium有木有直接通过text文本进行定位的方式?答:没有
父子节点实例:
xpath的用法:
谓语:
注意:
xpath的函数:contains等
轴定位
xpath元素定位:
1、什么时候使用xpath
没有明显特征的元素:id ,name,class_name,能找到多个元素
2、先到浏览器当中去验证xpah表达式
1、检查表达式是否正确
2、是否唯一
注意:1、不要直接copy浏览器的xpath,杜绝使用(绝对路径,不智能)
2、有插件,熟练使用为了提升效率可以使用chropath插件,在学习阶段,不要去用。
因为面试必考。
八、css表达
组合条件
面试题:css和xpath的区别优缺点。
1、css更加简洁
2、xpath的功能更强大
对于简单的元素定位使用css,复杂的使用xpath
3、xpath可以使用text文本定位,css不可以。
4、效率,通常来说,xpath的解析效率,Css要快一点。
总结:
*通配符使用