一,常用的8种定位方式
id定位
driver.find_element_by_id("id 值")
driver.find_element(by = "id", value = "ID值" )
name定位
单个元素:
driver.find_element_by_name("name值")
driver.find_element(by = "name", value = "name值")
多个元素:
driver.find_elements_by_name("name值")
driver.find_elements(by = "name", value = "name值")
class name定位
单个元素:
driver.find_element_by_class_name("class 属性值")
driver.find_element(by = "class name", value = "class 属性值")
多个元素:
driver.find_elements_by_class_name("class 属性值")
driver.find_elements(by = "class name", value = "class 属性值")
tag定位
单个元素:
driver.find_element_by_tag_name("标签名称")
driver.find_element(by = "tag name", value = "标签名称")
多个元素:
driver.find_elements_by_tag_name("标签名称")
driver.find_elements(by = "tag name", value = "标签名称")
link定位
单个元素:
driver.find_element_by_link_text("链接全部文字内容")
driver.find_element(by = "link text", value = "链接全部文字内容")
多个元素:
driver.find_elements_by_link_text("链接全部文字内容")
driver.find_elements(by = "link text", value = "链接全部文字内容")
partial_link定位
单个元素:
driver.find_element_by_partial_link_text("链接部分文字内容")
driver.find_element(by = "partial link text", value = "链接部分文字内容")
多个元素:
driver.find_elements_by_partial_link_text("链接部分文字内容")
driver.find_elements(by = "partial link text", value = "链接部分文字内容")
xpath定位
单个元素:
driver.find_element_by_xpath("xpath 定位表达式")
driver.find_element(by = "xpath", value = "xpath 定位表达式")
多个元素:
driver.find_elements_by_xpath("xpath 定位表达式")
driver.find_elements(by = "xpath", value = "xpath 定位表达式")
css定位
单个元素:
driver.find_element_by_css("css定位表达式")
driver.find_element(by = "css", value = "css定位表达式")
多个元素:
driver.find_elements_by_css("css 定位表达式")
driver.find_elements(by = "css", value = "css定位表达式")
二,Xpath定位
使用绝对路径定位元素: /html/body/div/input[@value="查询"] 不建议使用
使用相对路径定位元素
//input[@value="查询"]
使用索引号定位元素
//div[last()-1]/a 倒数第二个div元素下的a标签
//div/input[position()<2] div元素下input的位置序列号小于2的input标签
使用页面元素多个属性值定位元素
//div[@name="div1" and @value="div2"]/input[@name="div1input"]
使用模糊属性值定位元素
//img[starts-with(@alt,"div1") 查找属性alt的属性值以div1开始的页面元素
//img[contains(@alt,"img")] 查找属性alt的属性值包含img的页面元素
使用xpath轴定位元素
//div[@name="div1"]/parent::input 查找name属性值为div1的div元素的父级input元素
//div[@name="div1"]/child:img 查找name属性值为div1元素的子级img元素
//div[@name="div1"]/following::img 查找name属性值为div1的div元素后面的所有img元素
//div[@name='div1']/following-sibling::img 查找name属性值为div1的div元素后面所有兄弟img元素
//div[@name='div1']/preceding::img 查找name属性值为div1的div元素前面的所有img元素
//div[@name='div1']/preceding-sibling::img[1] 查找name属性值为div1的div元素前面的所有兄弟中的第一个img元素
//div[@name='div1']/ancestor::img 查找name属性值为div1的div元素的所有上级的img元素
//div[@name='div1']/descendant::img 查找name属性值为div1的div元素的所有下层的img元素
使用页面元素的文本定位元素
//a[contains(text(), "百度")] 查找文本是“百度”的元素
//a[text()="搜狐"] 查找文本是“搜狐”的元素
使用xpath运算符定位元素
//div[a>9] 子元素中有a元素,文本值>9的div元素
//div[a<10 and span =13] 子元素中有a元素,文本值>9 同时子元素span文本值=13的div元素
三,Css定位
CSS定位方法:driver.find_element_by_css_selector()
CSS常用策略
1. id选择器:driver.find_element_by_css_selector("#su") 查找id为su的元素
2. class选择器:driver.find_element_by_css_selector(".bg_s_btn") 查找class属性值为bg_s_btn的元素
3. 元素选择器:driver.find_element_by_css_selector("input") 查找所有input元素
4. 属性选择器:driver.find_element_by_css_selector("[name='ie']") 查找name属性为ie的元素
5. 层级选择器:driver.find_element_by_css_selector("div>[name='ie']") 查找div下的name属性为ie的元素 >可用空格代替 注意:直接子节点才能使用
6. CSS延伸:
input[type^='p'] 找一个input元素,type属性的值以p开头
input[type$='d'] 找一个input元素,type属性的值以d结尾
input[type*='w'] 找一个input元素,type属性的值包含w
四,CSS元素定位与XPATH元素定位的对比