在webUI自動化中,通過xpath基本上可以搞定所有的元素定位。但還有一種更為高效的定位方式:css定位。相比xpath定位,css定位的性能或者效率更高。
css定位方式:
方式一:單一屬性或標簽名定位
1,標簽名定位:
以百度首頁為例:
我們可以看到,input標簽名有23個。
所以,僅僅通過標簽名的css定位有很大局限性。
拓展:通過標簽+屬性名(沒有屬性值)也可以進行定位
2,通過單一屬性id定位
在css定位中,通過id定位時,需要用#符號表示。
我們可以看到,input#su就可以定位到id屬性值為su的input標簽了。
3,通過單一屬性class定位
在css定位中,通過class定位時,需要使用.符號來表示。
從圖中例子我們可以看出一個細節點:在css定位中,通過class定位時,class屬性值中有空格時,說明該class屬性有多個屬性值,我們定位的時候只能通過其中一個來進行定位,如果需要進行多個class屬性值來定位,則用多個.來標識(區別於xpath定位,xpath定位class時,進行精確的定位需要講class的屬性值寫全)。
可以看到,用到bg和s_btn時,每個屬性值前都加了.。
3,通過其他屬性值定位
格式:標簽名[屬性名=屬性值]
如:span[name='tj_settingicon']
方法二:屬性組合定位
css可以通過多個屬性組合定位
舉例:a.mnav[href='http://news.baidu.com']
例子中css定位到class屬性為mnav,href屬性為http://news.baidu.com的a標簽。
我們就能知道,通過多個屬性定位時,只要講屬性都寫出來即可(和xpath不同,xpath通過多個屬性進行組合定位時,需要用到邏輯運算符and,or等等)
方法三:屬性值模糊匹配
模糊匹配1:匹配屬性值中的其中一個,~=
語法:標簽名[屬性名~=屬性值]
如:span[class~='bg'],可以定位到class屬性為含有bg的span標簽。
模糊匹配2:匹配開頭:
css匹配以某個字符串開頭的屬性,用^=
語法:標簽名[屬性名^=屬性值開頭部分]
舉例:input[class^='bg'],這樣可以定位到class屬性值為bg開頭的input標簽
模糊匹配3:匹配結尾
語法:標簽名[屬性名$=屬性值結尾部分]
舉例:input[class$='s_btn'],這樣可以定位到class屬性值以s_btn結尾的input標簽了。
方法四:層級定位
在xpath中,用/來表示下一層。在css中用>來表示下一層
關於css的層級定位,待補充完整!