1.id
driver.find_element_by_id()
2.name
driver.find_element_by_name()
优点:id,name易于定位元素,大多数属性值是唯一的
缺点:很多元素没有id和name属性
3.class_name
driver.find_element_by_class_name()
不支持多个class_name的定位,可以用css_selector()代替,在每个class name前加小数点即可
driver.find_element_by_css_selector(".shopCar_btn_03.fl").click()
4.tag_name
driver.find_element_by_tag_name()
优点:几乎所有的元素都有class_name和tag_name,
缺点:class和flag的值往往不是唯一的,很难精准的找到一个元素
5.link_text
driver.find_element_by_link_text()
6.partial_link_text
driver.find_element_by_partial_link_text
缺点:只能用于<a>标签,需要定位超级文本链接时可以使用
7.xpath
driver.find_element_by_xpath()
8.css_selector(最重要的方法)
driver.find_element_by_css_selector()
得到css_selector方法
(1)copy:右键检查元素,选择copy->copy selector
(2)如果元素的某个属性是唯一的,那么可以直接在属性两边家上中括号,直接定位该元素
driver.find_element_by_css_selector('[value="1"]').click()
注意:需要两个双引号时,需要的单双引号错开使用
(3)标签名可以直接在css_selector中使用
div > input
(4)在css中,需要在class属性前面加一个小数点
driver.find_element_by_css_selector(".shopCar_btn_03.fl").click()(4)
(5)在css中,需要在id属性前面加一个#号
driver.find_element_by_css_selector('#filePicker label').click()
注意:
大于号 > 表示父子关系,前面的元素是后面元素的父元素
div > input 表示要找的input元素,有一个父节点是div
空格 表示祖先元素和子孙元素的关系
div#id input.class 表示页面中有一个id="id"的div元素,在div的子孙节点中,有一个input标签,该input标签有一个class="class"的属性,我们要定位的就是这个input标签
<html>
<body>
<div id="id">
<.....>
<input class = "class">
井号# 用来表示id属性
小数点 . 用来表示class属性
中括号[] 用来表示所有属性
[id="1"],[class="a"]
a.可以用于定义radio button
#通过css_selector的方式可以采用任意的属性来定位元素,著需要在属性的两边加一个[]
#需要两个双引号时,需要的单双引号错开使用
driver.find_element_by_css_selector('[value="1"]').click()
b.label标签的定位
#2.6.2点击选择图片
driver.find_element_by_css_selector('#filePicker label').click()
优点:xpath和css_selector几乎可以用于所有页面元素定位,都有工具可以直接生成xpath和css_selector,
缺点:但是工具的生成不是100%管用,有些情况仍然需要手工写xpath,定位性能不是很好,所以当其他方法无法定位时才选择这种
如何在页面中找到元素,右键菜单中选择“Inspect”(检查),就可以清楚的看到元素属性
