一、8 大元素定位方式:
id,当一个元素有 id, 优先使用 id 进行定位,因为 id 在同一个页面当中是唯一的。 name, input元素,因为input元素需要往后端服务发送数据,name 属性作为 key。 class name,也是使用比较多的,class, find_element("class name", "s_ipt yts") tag name, 基本不用 link text, 主要用来定位超链接 partial link text xpath css selector
二、元素定位三大原则
不管通过什么方式查找元素,请确保你找到的元素要是唯一的,不会存在多个 如果通过某种方式找元素,能找到两个,怎么办? (1)加索引 (2)使用复合条件 name and class_name and tagname : xpath css 不论通过什么属性方式查找元素,如果你发现某个属性的值可能是会动态变化的,不要使用该属性定位元素。例如属性值当中包含了数字, p1 table2
三、xpath定位方式
(1)xpath定位
//a[@class="btn btn-sm btn-primary"]
(2)xpath+索引
//a[@class="btn btn-sm btn-primary"][1]
(3)xpath and 组合条件
//input[@name="wd" and @class="s_ipt" and @id="kw"]
(4) 通过爸爸找儿子
//span[@name="XXX"]/input[@name=""]
(5)通过祖先找后代
//span[@name="XXX"]//input[@name=""]
(6)语法 *
## *号 代替标签的名称
# 1 任意的元素他的name属性值为wd
//*[@name="wd"]
# 2 有name属性的任意元素
//*[@name]
(7)通过儿子找父亲
# 儿子找父亲
//input[@name="wd"]/..
# 儿子找爷爷
//input[@name="wd"]/../..
(8)语法 text
//div[@id="s-top-left"]/a[text()="视频"]
(9)语法 contains 包含
//div[@id="s-top-left"]/a[contains(text(),"视频")]
//div[@id="s-top-left"]/a[contains(@class,"s_ipt")]
(9)轴定位
# 找哥哥
//input[@name='wd']//preceding-sibling::span
# 找弟弟
//input[@name='wd']//following-sibling::span
# 找父亲
//input[@name='wd']//parent::span