大家在使用selenium元素定位的時候,通常更多使用的是XPATH,,css定位方式用得比較少
但有時候css定位方式還是有一些優(yōu)勢的,,
優(yōu)勢1:一般情況下定位速度要比XPATH快
優(yōu)勢2:語法要比XPATH更簡潔
下面簡要介紹一下css元素選擇器的語法
常見語法
*
|
通用元素選擇器,匹配任何元素
|
E
|
標(biāo)簽選擇器,,匹配所有使用E標(biāo)簽的元素
|
.info
|
class選擇器,,匹配所有class屬性中包含info的元素
|
#footer
|
id選擇器,匹配所有id屬性等于footer的元素
|
E,F
|
多元素選擇器,,同時匹配所有E元素或F元素,,E和F之間用逗號分隔
|
E F
|
后代元素選擇器,匹配所有屬于E元素后代的F元素,,E和F之間用空格分隔
|
E > F
|
子元素選擇器,,匹配所有E元素的子元素F
|
E + F
|
毗鄰元素選擇器,匹配緊隨E元素之后的同級元素F (只匹配第一個)
|
E ~ F
|
同級元素選擇器,,匹配所有在E元素之后的同級F元素
|
E[att='val']
|
屬性att的值為val的E元素 (區(qū)分大小寫)
|
E[att^='val']
|
屬性att的值以val開頭的E元素
(區(qū)分大小寫)
|
E[att$='val']
|
屬性att的值以val結(jié)尾的E元素
(區(qū)分大小寫)
|
E[att*='val']
|
屬性att的值包含val的E元素 (區(qū)分大小寫)
|
E[att1='v1'][att2*='v2']
|
屬性att1的值為v1,,att2的值包含v2 (區(qū)分大小寫)
|
E:contains('xxxx')
|
內(nèi)容中包含xxxx的E元素
|
E:not(s)
|
匹配不符合當(dāng)前選擇器的任何元素
|
例如這樣一段html代碼的網(wǎng)頁
<div
class="formdiv">
<form
name="fnfn">
<input name="username"
type="text"></input>
<input name="password"
type="text"></input>
<input name="continue"
type="button"></input>
<input name="cancel"
type="button"></input>
<input value="SYS123456"
name="vid" type="text">
<input value="ks10cf6d6"
name="cid" type="text">
</form>
<div
class="subdiv">
<ul
id="recordlist">
<p>Heading</p>
<li>Cat</li>
<li>Dog</li>
<li>Car</li>
<li>Goat</li>
</ul>
</div>
</div>
匹配示例:
locator
|
匹配
|
css=div
css=div.formdiv
|
<div
class="formdiv">
|
css=#recordlist
css=ul#recordlist
|
<ul
id="recordlist">
|
css=div.subdiv p
css=div.subdiv > ul >
p
|
<p>Heading</p>
|
css=form + div
|
<div
class="subdiv">
|
css=p + li
css=p ~ li
|
二者定位到的都是
<li>Cat</li>
但是storeCssCount的時候,,前者得到1,后者得到4
|
css=form > input[name=username]
|
<input
name="username">
|
css=input[name$=id][value^=SYS]
|
<input value="SYS123456"
name="vid" type="hidden">
|
css=input:not([name$=id][value^=SYS])
|
<input name="username"
type="text"></input>
|
css=li:contains('Goa')
|
<li>Goat</li>
|
css=li:not(contains('Goa'))
|
<li>Cat</li>
|
|