一,常用的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元素定位的对比

python精确指定内容的字符串_javascript