XPATH定位
XPATH和CSS選擇器最重要的區(qū)別是XPATH可以向前和向后查詢DOM結(jié)構(gòu)的元素丰介,而CSS選擇器只能向前查詢搞乏,這意味著XPATH可以通過(guò)子元素來(lái)定位父元素盔性!
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id ='app'>我是div
<form id="loginForm" name="f"> 我是form
<input id="name" name="username" class="'s_ipt" autocomplete="off"> 我是input_1
<input name="contiune" type="button">我是input_2
<input type="submit" id="su" value="搜索" class="bg s_btn">我是input_2
</form>
</div>
</body>
</html>
選取節(jié)點(diǎn)
1)選取此節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
nodename = "html"
element = driver.find_element_by_xpath("html").find_element_by_xpath('body')
選取html-body節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
2) / 從根節(jié)點(diǎn)選取,代表絕對(duì)路徑
element = driver.find_element_by_xpath('/html/body/div')
選取html-body-div節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
3)// 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn)和泌,而不考慮它們的位置
element = driver.find_element_by_xpath('//div')
選取div節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
4). . 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)卵贱;@選取屬性
element = driver.find_element_by_xpath('//*[@id="name"]').find_element_by_xpath('..')
選取input_1的父節(jié)點(diǎn)form
5). 選取當(dāng)前節(jié)點(diǎn)
選取未知節(jié)點(diǎn)
1)* 匹配任何元素節(jié)點(diǎn)
element = driver.find_element_by_xpath('//[@id="name"]')
//[@id="name"]:選取文檔中所有符合id屬性值為name的節(jié)點(diǎn)
2)@* 匹配任何屬性節(jié)點(diǎn)
element = driver.find_element_by_xpath('//input[@*]')
選取文檔中所有帶有屬性input的元素
3)node() 匹配任何類型的節(jié)點(diǎn)
選取若干路徑
1) | 選取若干路徑
element = driver.find_element_by_xpath('//input| //div')
選取文檔中所有input和div元素
關(guān)鍵字
element = driver.find_element_by_xpath("http://input[starts-with(@id,'na')]")
選取id值以na開(kāi)頭的input節(jié)點(diǎn)
element = driver.find_element_by_xpath("http://input[contains(@id,'na')]")
選取id值包含na的input節(jié)點(diǎn)
element = driver.find_element_by_xpath("http://input[contains(@id,'na') and contains(@id,'me')]")
選取id值包含na和me的input節(jié)點(diǎn)
element = driver.find_element_by_xpath("http://title[contains(text(),'itle')]")
選取節(jié)點(diǎn)文本包含itle的title節(jié)點(diǎn)
xpath軸
element = driver.find_element_by_xpath("http://form/descendant::input[@id='name']")
在form元素的所有子元素中滥沫,選擇input標(biāo)簽且id為name的元素
element = driver.find_element_by_xpath("http://form/ancestor::div[@id='app']")
在form元素的所有先輩中,選擇div標(biāo)簽且id為app的元素
XPATH使用方法:
1键俱、通過(guò)絕對(duì)路徑定位(不推薦)
2、通過(guò)相對(duì)路徑定位
3世分、通過(guò)索引定位
element = driver.find_element_by_xpath("http://input[1]")
4编振、使用XPATH及屬性值定位
element = driver.find_element_by_xpath('//*[@id="name"]')
5、使用XPATH及屬性名稱定位
driver.find_element_by_xpath("http://input[@id='name']")
6臭埋、部分屬性值匹配
element = driver.find_element_by_xpath("http://input[starts-with(@id,'na')]")
7踪央、使用任意值來(lái)匹配屬性及元素
8、使用XPATH軸來(lái)定位
element = driver.find_element_by_xpath("http://form/ancestor::div[@id='app']")