页面上的元素就像人同样,有各类属性,好比元素名字,元素id,元素属性(class属性,name属性)等等。webdriver就是利用元素的这些属性来进行定位的。css
能够用于定位的经常使用的元素属性:html
对应于webdriver中的定位一个元素方法分别是:web
相应的webdriver中的 定位一组元素的方法:spa
使用示例:插件
#id driver.find_element_by_id('kw') #name driver.find_element_by_name('tj_trnews')
driver.find_element_by_class_name("s_ipt")
#经过linx text定位 find_element_by_link_text("新闻") find_element_by_link_text("贴吧") #经过partail link text定位 find_element_by_link_text("新") find_element_by_link_text("贴")
''' XPath是一种文档定位语言。由于HTML能够看作是XML的一种实现,因此selenium用户可以使用这种强大的语言在web应用中定位。 绝对路径方法: 从根元素写起,当元素层级很深的时候,路径写的会很长,阅读性很差,也很难维护。不建议使绝对路径这样的方法。 相对路径方法: 经过Firebug很容易获得相对路径的xpath,打开Firebug插件,在页面上的搜索文本框,就能够显示出xpath了; ''' #经过xpath寻找,任意(*表明)id属性为’kw‘的元素 driver.find_element_by_xpath("//*[@id='kw']").click() #经过xpath寻找,任意(*表明)input属性为’kw‘的元素 driver.find_element_by_xpath("//input[@id='kw']").click() #须要根据上级目录的属性来定位当前元素 #经过上一级目录的id 属性定位 find_element_by_xpath("//span[@id=’input-container’]/input") #经过上三级目录的id 属性定位 find_element_by_xpath("//div[@id=’hd’]/form/span/input") #经过上三级目录的name 属性定位 find_element_by_xpath("//div[@name=’q’]/form/span/input")
#这种定位方法是比较难理解
#返回一个object data = driver.find_elements_by_tag_name('table')[0] #返回html源码 dataHtml = data.get_attribute('innerHTML') #返回ID值 dataId = data.get_attribute('id') #返回文本内容 dataText = data.text