1. 程式人生 > >Selenium+Webdriver 常用的元素定位方式

Selenium+Webdriver 常用的元素定位方式

假設頁面原始碼如下:

<input type="text"name="wd" id="kw1" class="input_wd" maxlength="100"style="width:474px;"autocomplete="off">

通過id定位元素:find_element_by_id(“id_vaule”):

browser=webdriver.Firefox()
browser.find_element_by_id("kw1")

通過name定位元素:find_element_by_name(“name_vaule”)

browser.find_element_by_name("wd"
)

通過tag_name定位元素:find_element_by_tag_name(“tag_name_vaule”)

browser.find_element_by_tag_name("input")#tag_name指標籤名稱

通過class_name定位元素:find_element_by_class_name(“class_name”)

browser.find_element_by_class_name("input_wd")

通過css定位元素:find_element_by_css_selector();用css定位是比較靈活的

browser.find_element_by_css_selector("input[id=\"
kw1\"]") browser.find_element_by_css_selector("input.input_wd) browser.find_element_by_css_selector("#kw1)

通過xpath定位元素:find_element_by_xpath(“xpath”)
XPath(XML Path Language)是一種在XML文件中定位元素的語言,由於HTML文件本身就是一個標準的XML頁面,所以我們可以使用XPath的語法來定位頁面元素。
假設頁面原始碼如下:
頁面原始碼
注:元素的xpath絕對路徑可通過firebug直接查詢,絕對路徑以單/開頭,從文件的根節點開始解析(如:/html/body/table/tbody/tr[2]/td[2]/div/div[1]/div/div[2]/div[4]/div[3]/div[1]/a[1]),相對路徑則以//開頭,從文件的任意節點開始解析。
firebug檢視xpath

相對路徑的引用寫法:

表示式 描述
//input 選取所有input元素
//form[1]/input 選取第一個form元素內的所有直接子input元素
//form[1]//input 選取第一個form元素內的所有子input元素,不論嵌套了多少層
//form[1]/input[last()] 選取第一個form元素內的所有直接子input元素中的最後一個
//form[@id=’loginForm’] 選取id屬性值為loginForm的form元素
//input[@name=’continue’][@type=’button’] 選取name屬性值為continue且type屬性值為button的input元素
//form[@id^=’loginForm’]/input[4] 選取id以loginForm開頭的form元素下第4個input元素
browser.find_element_by_xpath(“//td[contains(text(),’下單編號’)]”) 選取text文字為下單編號的td

通過link定位:find_element_by_link_text(“text_vaule”)或者find_element_by_partial_link_text()
適用於頁面中出現的文字連結

browser.find_element_by_link_text("登入").click() #點選登入連結
browser.find_element_by_partial_link_text("登").click()#只用了連結中的部分文字