1. 程式人生 > 其它 >Web自動化之元素定位篇

Web自動化之元素定位篇

Web自動化測試中的八大定位方法

八大定位方式=6種基本定位+xpath+css

一、id定位

ele = driver.find_element_by_id("id名")

二、標籤名定位tag_name,不能唯一的找到特定的元素

ele = driver.find_element_by_tag_name("元素標籤名")

三、class_name 定位  不能唯一的找到特定的元素

ele = driver.find_element_by_class_name("class標籤名")

四、name 定位 不唯一

ele = driver.find_element_by_name("name名")

五、link_text 定位,完整匹配文字值

ele = driver.find_element_by_link_text("完整文字值")

六、partial_link_text 定位,部分匹配上

ele =  driver.find_element_by_partial_link_text("部分文字值")

七、xpath定位

(1)絕對路徑:以/開頭, 非常依賴於頁面的順序和位置

/html/body/div[1]/div[1]/div[4]/div[1]/div/form/span[1]] (2)相對路徑:以//開頭,不依賴於頁面的順序和位置,只看整個頁面當中有沒有符合表示式的元素 (3)選取當前節點; .. 選取當前節點的父節點 (4) @ 選取屬性   //標籤名稱[@屬性名稱=值]    比如://*[@id="kw"] (5) 邏輯運算  and 條件於;or 條件或  //標籤名稱[@屬性名稱=值  and 屬性名稱=值 ] //div[@class="xxx" and contains(@style,"display:visibility")] (6)*:萬用字元。匹配所有 //* ; @*:萬用字元。匹配所有屬性 //*[@*="hello"] 1、標籤名+節點屬性定位   語法://標籤名[@屬性名=值]   //input[@id="kw" and @name="wd"] 2、函式:text()定位(函式和邏輯:文字內容定位,無name,class等,需要用到文字內容定位)   文字全部匹配:text()="文字內容"   //a[text()="更多產品"]   文字部分匹配:contains(text(),部分文字內容)   //*[@id="u1"]//a[text()="地圖"] 3、部分包含contains   contains(@屬性名稱/text(),文字內容)   //a[//a[contains(@class,"namv")]] 後面可以加and或者or各種組合   //a[contains(text(),"登入")] 4、層級定位   //div[@id="u1"]/a[@name="tj_login"]   //div[@id="u1"]//a[@name="tj_login"] 5、軸定位
  • ancestor 祖先節點,包括父節點
  • parent :父節點
  • preceding:當前元素節點標籤之前所有節點(html的先後順序)
  • preceding-sibling:當前元素節點之前的所有兄弟節點
  • following:當前元素節點標籤之後的所有節點(html的先後順序)
  • following-sibling:當前元素節點標籤之後的所有兄弟節點  

  使用語法:

  /軸名稱::節點名稱[@屬性=值]  ,使用場景:頁面顯示為一個表格樣式的資料列,,需要通過組合來定位元素。   //div//table//td//preceding::td   //div[@id="kw"]/ancestor::a[text()="測試"]/following-sibling::div//a 八、CSS定位

  1、id選擇器

  根據元素id屬性來選擇格式:#id

  #su<選擇id屬性值為su的元素>

  2、class選擇器

  根據元素class屬性來選擇格式:.class

  .telA<選擇class屬性值為tel的所有元素>

  3、元素選擇器

  根據元素的標籤名選擇格式:element

  input <選擇所有input元素>

  4、屬性選擇器

  根據元素的屬性名和值來選擇

  [type=“password”] <選擇type屬性值為password的元素>

  定位多個屬性的寫法:

  [屬性1=“屬性值”][屬性2=“屬性值”]...

  5、根據元素層級關係定位

  上下級關係:上級元素下面所有的後代元素,包括直接子元素

    上級元素 下級元素   父子關係:上層元素下面緊跟下級元素...     父元素>子元素   兄弟關係,同級關係:     哥哥+弟弟     css語法中只能通過前面的元素定位後面的元素   6、子元素中指定唯一元素   當目標元素同級元素都是同一種類型可以採用nth-child

  語法:

  元素:nth-child(n) n從1開始   元素:nth-last-child(n) 倒數第n個元素