1. 程式人生 > 其它 >元素定位總結/定位原則/XPATH定位/find_element

元素定位總結/定位原則/XPATH定位/find_element

定位輔助工具:

chrome:一,自帶的ctrl+f 二,ChroPath外掛
firefox:firebug外掛

定位原則:

1,不依靠節點順序和節點位置。
2,只要能夠找得到匹配特徵的元素久可以。
3,有id儘量用,儘量定位到要操作的元素上。
4,定位選取時分析頁面結構,考慮屬性不會變化,穩定的不變的,有代表性。

8種定位策略:

ID:id是指頁面元素的屬性名id值,因為元素id在整個頁面中是唯一的,所以如果元素有id屬性,通過id定位是首選的方式。如果id不唯一則不建議使用。對應定位方法:find_element_by_id
NAME:通過元素的name屬性進行定位。對應定位方法:find_element_by_name
CLASS NAME:通過元素的class name屬性進行定位。對應定位方法:find_element_by_class_name
TAG NAME:通過元素名定位,基本不用,因為相同的tagname太多。對應定位方法:find_element_by_tag_name
LINK_TEXT:通過連結文字內容全匹配。對應定位方法:find_element_by_link_text
PARTIAL LINK:通過連結文字內容模糊匹配。對應定位方法:find_element_by_partial_link_text
CSS:css_selector定位。對應定位方法:find_element_by_css_selector
XPATH:通過xpath表示式定位。對應定位方法:find_element_by_xpath

XPATH定位:

基本語法:

/ 絕對定位,從根節點選取

// 相對定位,從匹配選擇的當前節點選擇文件中的節點,而不考慮他們的位置。

. 選取當前節點

.. 選取當前節點的父

@ 選取屬性。@class="xxx" @id="xxx"。屬性放在中括號[]中

  • 萬用字元。匹配所有標籤

@* 匹配所有屬性

絕對定位:

/開頭  父節點/子節點關係

相對定位:

//開頭 後可以接//

對比優缺點:頁面元素一旦發生變化,絕對路徑就會失效。
所以一般不適用絕對路徑來定位元素。

定位方式:

1,使用標籤名+節點屬性定位, //標籤名[@屬性名=值]
2,使用文字匹配定位,//標籤名[text()=值]
3,模糊匹配(包含),//標籤名[contains(@屬性/text(),值)]
4,邏輯運算 and or,//標籤名[@屬性=值 and contains(@屬性,值) and text()=值]
5,層級定位,//一級元素//二級元素//N級元素
6,組合元素索引(下標)定位,//li[@class="num"][2]//img
7,軸定位:常用4種
ancestor:祖先節點 包括父
parent:父節點
preceding-sibling:當前元素節點標籤之前的所有兄弟節點
following-sibling:當前元素節點標籤之後的所有兄弟節點 #要找的元素是已知的後邊元素

find_element和find_elements:

原始碼中,8大定位方式實際都是呼叫driver.find_element(by, value),直接使用這個方法框架中使用時會更加靈活一些。
find_element(By.定位策略,定位表示式),返回的是WebElement物件。
find_elements(By.定位策略,定位表示式),返回時一個物件列表。