|
前言 大部分人在使用selenium定位元素時(shí),用的是xpath定位,因?yàn)閤path基本能解決定位的需求。css定位往往被忽略掉了,其實(shí)css定位也有它的價(jià)值,css定位更快,語法更簡(jiǎn)潔。 一、css:屬性定位 1.css可以通過元素的id、class、標(biāo)簽這三個(gè)常規(guī)屬性直接定位到 2.如下是百度輸入框的的html代碼: <input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/> 3.css用#號(hào)表示id屬性,如:#kw 4.css用.表示class屬性,如:.s_ipt 5.css直接用標(biāo)簽名稱,無任何標(biāo)示符,如:input ![]() 二、css:其它屬性 1.css除了可以通過標(biāo)簽、class、id這三個(gè)常規(guī)屬性定位外,也可以通過其它屬性定位 2.以下是定位其它屬性的格式 ![]() 三、css:標(biāo)簽 1.css頁可以通過標(biāo)簽與屬性的組合來定位元素 ![]() 四、css:層級(jí)關(guān)系 1.在前面一篇xpath中講到層級(jí)關(guān)系定位,這里css也可以達(dá)到同樣的效果 2.如xpath://form[@id='form']/span/input和 //form[@class='fm']/span/input也可以用css實(shí)現(xiàn) ![]() 五、css:索引 1.以下圖為例,跟上一篇一樣
2.css也可以通過索引option:nth-child(1)來定位子元素,這點(diǎn)與xpath寫法用很大差異,其實(shí)很好理解,直接翻譯過來就是第幾個(gè)小孩 ![]() 六、css:邏輯運(yùn)算
1.css同樣也可以實(shí)現(xiàn)邏輯運(yùn)算,同時(shí)匹配兩個(gè)屬性,這里跟xpath不一樣,無需寫and關(guān)鍵字 ![]() 1.css的模糊匹配contains('xxx'),網(wǎng)上雖然用各種資料顯示能用,但是小編親自試驗(yàn)了下,一直報(bào)錯(cuò)。 2.在各種百度后找到了答案:you can't do this with CSS selectors, because there is no such thing as:contains() in CSS. It was a proposal that was abandoned years ago. 非常遺憾,這個(gè)語法已經(jīng)被拋棄了,所以這里就沒繼續(xù)研究了。 css語法遠(yuǎn)遠(yuǎn)不止上面提到的,還有更多更強(qiáng)大定位策略,有興趣的可以繼續(xù)深入研究。官方說法,css定位更快,語法更簡(jiǎn)潔,但是xpath更直觀,更好理解一些。 |
|
|