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個元素