XPath
--------------------------------------------------------------------------------
什么是XPath:http://www.w3.org/TR/xpath/
XPath基礎(chǔ)教程:http://www.w3schools.com/xpath/default.asp
selenium中被誤解的XPath : http://magustest.com/blog/category/webdriver/
XPath是一種在XML文檔中定位元素的語(yǔ)言。因?yàn)镠TML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語(yǔ)言在web應(yīng)用中定位元素。
XPath擴(kuò)展了上面id和name定位方式,提供了很多種可能性,比如定位頁(yè)面上的第三個(gè)多選框。
xpath:attributer (屬性)
driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
#input標(biāo)簽下id =kw的元素
xpath:idRelative (id相關(guān)性)
driver.find_element_by_xpath("//div[@id='fm']/form/span/input").send_keys("selenium")
#在/form/span/input 層級(jí)標(biāo)簽下有個(gè)div標(biāo)簽的id=fm的元素
driver.find_element_by_xpath("//tr[@id='check']/td[2]").click()
# id為'check' 的tr ,定閃他里面的第2個(gè)td
xpath:position (位置)
driver.find_element_by_xpath("//input").send_keys("selenium")
driver.find_element_by_xpath("//tr[7]/td[2]").click()
#第7個(gè)tr 里面的第2個(gè)td
xpath: href (水平參考)
driver.find_element_by_xpath("//a[contains(text(),'網(wǎng)頁(yè)')]").click()
#在a標(biāo)簽下有個(gè)文本(text)包含(contains)'網(wǎng)頁(yè)' 的元素
xpath:link
driver.find_element_by_xpath("//a[@href='http://www.baidu.com/']").click()
#有個(gè)叫a的標(biāo)簽,他有個(gè)鏈接href='http://www.baidu.com/ 的元素
link 定位
--------------------------------------------------------------------------------
有時(shí)候不是一個(gè)輸入框也不是一個(gè)按鈕,而是一個(gè)文字鏈接,我們可以通過(guò)link
#coding=utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
browser.get(http://www.baidu.com)
time.sleep(2)
browser.find_element_by_link_text("貼 吧").click()
time.sleep(2)
browser.quit()
一般一個(gè)那頁(yè)面上不會(huì)出現(xiàn)相同的文件鏈接,通過(guò)文字鏈接來(lái)定位也是一種簡(jiǎn)單有效的定位方式。
Partial Link Text 定位
--------------------------------------------------------------------------------
通過(guò)部分鏈接定位,這個(gè)有時(shí)候也會(huì)用到,我還沒(méi)有想到很好的用處。拿上面的例子,我可以只用鏈接的一部分文字進(jìn)行匹配:
browser.find_element_by_partial_link_text("貼").click()
#通過(guò)find_element_by_partial_link_text() 函數(shù),我只用了“貼”字,腳本一樣找到了"貼 吧" 的鏈接