在selenium中使用css选择器进行元素定位(一)
大家在使用selenium元素定位的时候,通常更多使用的是XPATH,css定位方式用得比较少
selenium怎么使用但有时候css定位方式还是有一些优势的,
优势1:一般情况下定位速度要比XPATH快
优势2:语法要比XPATH更简洁
下面简要介绍一下css元素选择器的语法
常见语法
* | 通用元素选择器,匹配任何元素 |
E | 标签选择器,匹配所有使用E标签的元素 |
.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元素 (区分大小写) |
E[att^='val'] | 属性att的值以val开头的E元素 (区分大小写) |
E[att$='val'] | 属性att的值以val结尾的E元素 (区分大小写) |
E[att*='val'] | 属性att的值包含val的E元素 (区分大小写) |
E[att1='v1'][att2*='v2'] | 属性att1的值为v1,att2的值包含v2 (区分大小写) |
E:contains('xxxx') | 内容中包含xxxx的E元素 |
E:not(s) | 匹配不符合当前选择器的任何元素 |
例如这样一段html代码的网页
<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> |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论