八种元素定位:
1.chrome定位工具
(1)打开浏览器,按F12弹出开发者工具选项,选择elements
(2)鼠标单击最左边箭头,滑动到你要操作的元素,单击一下
(3)对应元素会有深蓝色背景
2.ID定位(唯一)
id js ==> getElementById(“kw”),id是唯一
driver.find_element_by_id("kw")
一种情况除外:有id的属性,也不要使用,因为id可能会动态变化
1.带数字,2.不太规则的字母
不仅id会动态变化,其他的元素也是一样的,避免使用带数字和或不规则的字母的属性进行定位
3.name定位,找到唯一的name值
name属性,经常用来元素定位, input,输入,标记
radio,checkbox ==> 对象,webElement
name属性,经常用来元素定位, input,输入,标记
# radio,checkbox ==> 对象,webElement
# 返回找到的第一个符合条件的元素
news_ele = driver.find_element_by_name("tj_trnews")
# 返回找到的所有的符合条件的元素,列表形式出现
element = driver.find_elements_by_name("tj_trnews")
4.class name定位
如果class name的值有空格,查找时要去掉空格,不然查不出来
e = driver.find_element_by_class_name("s_btn")
print(e.get_attribute("value"))
5.Tag name定位
e = driver.find_element_by_tag_name("标签值")
6.Link定位,Partial link定位
链接文本内容全匹配和部分匹配
e = driver.find_element_by_link_text("新闻")
e = driver.find_element_by_partial_link_text("新")
- xpath定位
(1) xpath 和 css,css更快更精简,xpath功能更强大,定位更清晰
(2)xpath是XML路径语言,用来确定xml文档中某部分位置的语言
(3)/开头,绝对路径:从html节点开始,一代代检索下来,直到被查找的元素
(4)//开头,相对路径,1:可以节省前面的表达式 2:前端部分代码修改后,定位兼容性更好
五种定位方式:
1.使用标签名+节点属性定位://标签名[@属性名=值] , 如: //input[@id=“su”]
2.组合元素索引(下标)定位://标签名[@属性名=值][N]//标签名
这是使用第一种方法后,还是找出很多元素,在元素列表里,选择第N个元素,根据其中标签名定位
3.通过部分属性值定位://标签名[contains(@属性名=部分值)] 如://input[contains(@id,“u”)]
4.使用文本内容匹配
(1)全部文本匹配://标签名[text=""] 如://p[text()=“下载百度APP”]
(2)部分文本匹配://标签名[contains(text,"")] 如://p[contains(text(),“下载”)]
5.使用轴定位表达式
比如想根据A标签找到B标签,先定位A标签,然后"/轴关系名称::标签名",接着"/标签名"
如://p[contains(text(),“下载”)]/parent::div/parent::div/div