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文檔中定位元素的語言。因為HTML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語言在web應(yīng)用中定位元素。
XPath擴(kuò)展了上面id和name定位方式,提供了很多種可能性,比如定位頁面上的第三個多選框。
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 層級標(biāo)簽下有個div標(biāo)簽的id=fm的元素
driver.find_element_by_xpath("//tr[@id='check']/td[2]").click()
# id為'check' 的tr ,定閃他里面的第2個td
xpath:position (位置)
driver.find_element_by_xpath("//input").send_keys("selenium")
driver.find_element_by_xpath("//tr[7]/td[2]").click()
#第7個tr 里面的第2個td
xpath: href (水平參考)
driver.find_element_by_xpath("//a[contains(text(),'網(wǎng)頁')]").click()
#在a標(biāo)簽下有個文本(text)包含(contains)'網(wǎng)頁' 的元素
xpath:link
driver.find_element_by_xpath("//a[@href='http://www.baidu.com/']").click()
#有個叫a的標(biāo)簽,他有個鏈接href='http://www.baidu.com/ 的元素
link 定位
--------------------------------------------------------------------------------
有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接,我們可以通過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()
一般一個那頁面上不會出現(xiàn)相同的文件鏈接,通過文字鏈接來定位也是一種簡單有效的定位方式。
Partial Link Text 定位
--------------------------------------------------------------------------------
通過部分鏈接定位,這個有時候也會用到,我還沒有想到很好的用處。拿上面的例子,我可以只用鏈接的一部分文字進(jìn)行匹配:
browser.find_element_by_partial_link_text("貼").click()
#通過find_element_by_partial_link_text() 函數(shù),我只用了“貼”字,腳本一樣找到了"貼 吧" 的鏈接