定位css 和xpath

推薦的定位方式的優(yōu)先級(jí)

優(yōu)先級(jí)最高:ID

優(yōu)先級(jí)其次:name

優(yōu)先級(jí)再次:CSS selector

優(yōu)先級(jí)再次:Xpath



針對(duì)css selector和xpath的優(yōu)先級(jí)做一個(gè)簡(jiǎn)單的說(shuō)明

在項(xiàng)目中我們可能用的最多的是css或者xpath凶赁,那么針對(duì)這兩種,我們優(yōu)先選擇css,原因在哪些弯予?

原因1:css是配合html來(lái)工作叨襟,它實(shí)現(xiàn)的原理是匹配對(duì)象的原理斋射,而xpath是配合x(chóng)ml工作的悠垛,它實(shí)現(xiàn)的原理是遍歷的原理咒吐,所以兩者在設(shè)計(jì)上野建,css性能更優(yōu)秀

原因2:語(yǔ)言簡(jiǎn)潔,明了恬叹,相對(duì)xpath

原因3:前段開(kāi)發(fā)主要是使用css候生,不使用xpath,所以在技術(shù)上面绽昼,我們可以獲得幫助的機(jī)會(huì)非常多



1.xpath選擇元素

/ 表示直接子節(jié)點(diǎn)

//所有的子節(jié)點(diǎn)

//li[@text()=‘文本內(nèi)容’] ?通過(guò)文本內(nèi)容查找元素

//div[@id='hello']/../p ? ? ?通過(guò)父節(jié)點(diǎn)查找元素

//div[@style] ? ? ? ? ? ? ? ? 有style屬性的div

//div[last()] ??? ? ?最后一個(gè)div元素

//div[position()<=2] ? ? ? ? ? ?前兩個(gè)div元素

//p[@id='ui']/preceding-sibling::div ? ? ? ? 選擇兄弟節(jié)點(diǎn)前所有的div元素

//p[@id='ui']/following-sibling::div ? ? ? ? ?選擇兄弟節(jié)點(diǎn)后所有的div元素


2.css選擇元素

2.1? css可以通過(guò)元素的id唯鸭、class、標(biāo)簽這三個(gè)常規(guī)屬性直接定位到

2.2 .css用#號(hào)表示id屬性,如:#kw

?2.3? ?css用.表示class屬性绪励,如:.s_ipt

? 2.4 .css直接用標(biāo)簽名稱肿孵,無(wú)任何標(biāo)示符,如:input

>表示直接子節(jié)點(diǎn)

div p 表示div下的所有p

hello>p,div ? ? ? 所有的p和所有的div

div+p ? ? ? ? ? ? ? 兄弟節(jié)點(diǎn)疏魏,緊挨著div下的p

div~p ? ? ? ? ? ? ? 兄弟節(jié)點(diǎn)div下所有的p

div[@style] ? ? ? 擁有style屬性的所有div

div:nth-of-type(1) ? ? ? ? ? 元素中為div的第一個(gè)

div:nth-of-child(1) ? ? ? ? ?子元素中所有_元素的第一個(gè)

driver.find_element_by_css_selector("#kw")

driver.find_element_by_css_selector(".s_ipt")

css 通過(guò)name 定位

driver.find_element_by_css_selector("[name='wd']")

css 通過(guò)autocomplete 定位

driver.find_element_by_css_selector("[autocomplete='off']")

css 通過(guò)type 定位

driver.find_element_by_css_selector("[type='text']")

css 組合標(biāo)簽和屬性組合定位

driver.find_element_by_css_selector("input[id='kw']")

driver.find_element_by_css_selector("input#kw")

driver.find_element_by_css_selector("input.s_ipt")

driver.find_element_by_css_selector("input:contains('kw')")

同時(shí)匹配兩個(gè)屬性停做,中間不用and關(guān)鍵字

driver.find_element_by_css_selector("input[id='kw'][name='wd']")

屬性值由多個(gè)空格隔開(kāi),匹配其中一個(gè)值的方法

driver.find_element_by_css_selector("input[class~='btn']")

匹配屬性值為字符串開(kāi)頭的方法

driver.find_element_by_css_selector("input[class^='btn']")

匹配屬性值字符串結(jié)尾的方法

driver.find_element_by_css_selector("input[class$='s_btn']")

匹配被-分割的屬性值的方法,如上圖的class

driver.find_element_by_css_selector("input[class|='s']") ?#要求精確填寫(xiě)的屬性值

driver.find_element_by_css_selector('#u_sp > a:nth-child(1)')#id為u_sp的下面的第一個(gè)a標(biāo)簽大莫。

find_element_by_css_selector(“a[id=\”kw1\”]”)

find_element_by_css_selector(“a[name=\”wd\”]”)

find_element_by_css_selector(“a[title=\”web\”]”)

find_element_by_css_selector(“a.RecycleBin”)

E:nth-last-child(n)蛉腌,如字面意思:倒數(shù)第幾個(gè)標(biāo)簽

E:first-child,第一個(gè)標(biāo)簽

E:last-child,最后一個(gè)標(biāo)簽

E:only-child,唯一的標(biāo)簽

class 字符串的含有空格,空格用點(diǎn)號(hào)代替

li a.js-cartitem-count.cartitem-count


用add 包含多種屬性

//*[@data-accountid = '27221' and @data-type='job']



? XPath軸(XPath Axes)可定義某個(gè)相對(duì)于當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)集:

1、child選取當(dāng)前節(jié)點(diǎn)的所有子元素

2只厘、parent選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)

3烙丛、descendant?選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子、孫等)

4羔味、ancestor選取當(dāng)前節(jié)點(diǎn)的所有先輩(父河咽、祖父等)

5、descendant-or-self?選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子赋元、孫等)以及當(dāng)前節(jié)點(diǎn)本身

6忘蟹、ancestor-or-self選取當(dāng)前節(jié)點(diǎn)的所有先輩(父、祖父等)以及當(dāng)前節(jié)點(diǎn)本身

???? 7搁凸、preceding-sibling 選取當(dāng)前節(jié)點(diǎn)之前的所有同級(jí)節(jié)點(diǎn)

???? 8媚值、following-sibling 選取當(dāng)前節(jié)點(diǎn)之后的所有同級(jí)節(jié)點(diǎn)

???? 9、preceding?? 選取文檔中當(dāng)前節(jié)點(diǎn)的開(kāi)始標(biāo)簽之前的所有節(jié)點(diǎn)

???? 10护糖、following?? 選取文檔中當(dāng)前節(jié)點(diǎn)的結(jié)束標(biāo)簽之后的所有節(jié)點(diǎn)

???? 11褥芒、self? 選取當(dāng)前節(jié)點(diǎn)

???? 12、attribute? 選取當(dāng)前節(jié)點(diǎn)的所有屬性

???? 13嫡良、namespace 選取當(dāng)前節(jié)點(diǎn)的所有命名空間節(jié)點(diǎn)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锰扶,一起剝皮案震驚了整個(gè)濱河市献酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌少辣,老刑警劉巖凌摄,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羡蛾,死亡現(xiàn)場(chǎng)離奇詭異漓帅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)痴怨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門忙干,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浪藻,你說(shuō)我怎么就攤上這事捐迫。” “怎么了爱葵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵施戴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我萌丈,道長(zhǎng)赞哗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任辆雾,我火速辦了婚禮肪笋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘度迂。我一直安慰自己藤乙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布惭墓。 她就那樣靜靜地躺著坛梁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腊凶。 梳的紋絲不亂的頭發(fā)上划咐,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音吭狡,去河邊找鬼尖殃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛划煮,可吹牛的內(nèi)容都是我干的送丰。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼弛秋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼器躏!你這毒婦竟也來(lái)了俐载?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤登失,失蹤者是張志新(化名)和其女友劉穎遏佣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體揽浙,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡状婶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馅巷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膛虫。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钓猬,靈堂內(nèi)的尸體忽然破棺而出稍刀,到底是詐尸還是另有隱情,我是刑警寧澤敞曹,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布账月,位于F島的核電站,受9級(jí)特大地震影響澳迫,放射性物質(zhì)發(fā)生泄漏局齿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一纲刀、第九天 我趴在偏房一處隱蔽的房頂上張望项炼。 院中可真熱鬧,春花似錦示绊、人聲如沸锭部。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拌禾。三九已至,卻和暖如春展哭,著一層夾襖步出監(jiān)牢的瞬間湃窍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工匪傍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留您市,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓役衡,卻偏偏與公主長(zhǎng)得像茵休,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351