-
id:基于元素属性中的id的值来进行定位,类似于人们身份证上的身份证号码,不出意外都不会重复
driver.find_element_by_id('id')
-
name:基于元素属性中的name的值来进行定位,类似于人们身份证上的名字,很可能会出现重名
driver.find_element_by_name('name')
-
link text:主要用于超链接进行定位
driver.find_element_by_link_text('注册')
-
partial link text:link text模糊查询版本,类似于数据库中的link %,当模糊查询匹配到多个符合调节的元素,选取第一个
driver.find_element_by_partial_link_text("册")
-
classname:基于元素class样式来定位,非常容易遇到重复的
driver.find_element_by_class_name("am-btn am-btn-secondary am-btn-xs am-radius")
-
tagname:标签名来进行定位,重复度最高,只有在需要定位后进行二次筛选的情况下使用
driver.find_elements_by_tag_name("a")
-
cssselector:通过绝对路径定位:这种方式几乎不用
driver.find_element_by_css_selector("body > div.am-g.my-content > div > div.am-u-sm-12.am-u-md-6.am-u-lg-4.container-right > div.forgetpwd-top > a")
-
xpath:1、通过绝对路径定位,这种方式几乎不用
driver.find_element_by_xpath("/html/body/div[4]/div/div[2]/div[1]/a")
-
xpath:2、通过相对路径进行定位,格式“//+唯一的父标签+/子标签……”
driver.find_element_by_xpath('//form/span/input')
-
xpath:3、通过元素属性定位
driver.find_element_by_xpath("//input[@name='pwd']")
driver.find_element_by_xpath('//a[@title="Tutorialspoint" and @rel="nofollow"]')
-
xpath:4、通过元素部分属性定位
driver.find_element_by_xpath("//a[starts-with(@title,'Tutorial')]")
driver.find_element_by_xpath("//a[contains(@title,'Tutorial')]")
driver.find_element_by_xpath("//a[contains(text(),'百度')]")
-
xpath:5、通过文本定位
driver.find_element_by_xpath("//span[text()='Login']")
这几种查找元素的效率中,id>name>xpath。网页中使用Copy Xpath不准确,不建议使用。有些元素每次网页刷新,属性值都会改变,这称之为动态元素,只能用其他方法定位。