css selector定位元素

selenium中经常要用css selector定位元素,虽说可以用firefox的firebug&firepath直接copy元素的xpath路径,但有时还是很必要用css selector来定位,也算技多不压身吧~~系统的学习一下,也当是临阵磨枪。
一共8种方式的选择器。

元素选择器

根据元素的标签定位,如下:

<button>OK</button>

selenium举例:
(By.CSS_SELECTOR,‘button’)
By.TAG_NAME(‘button’)

类选择器

根据元素的class属性来定位,
selenium举例:
(By.CSS_SELECTOR,‘.important’),会返回标题&段落两行;
(By.CSS_SELECTOR,‘.important.warning’),多类选择器,只会定位到段落一行
By.CLASS_NAME(‘important’)

ID选择器

根据元素的id属性来定位,
selenium举例:
(By.CSS_SELECTOR,‘#intro’);
By.ID(‘intro’)
注意:id在一个html中唯一,id属性区分大小写

属性选择器

根据元素的属性定位:

<p class="important warning">This paragraph is a very important warning.</p>

selenium举例:
(By.CSS_SELECTOR,‘p[class=”import warning”]’)
属性与属性的值需要完全匹配,如上面用p[class=’impprtant’]就定位不到;
部分属性匹配:(By.CSS_SELECTOR,‘p[class~=”import warning”]’);
子串匹配&特定属性匹配:
[class^=”def”]:选择 class 属性值以 “def” 开头的所有元素
[class$=”def”]:选择 class 属性值以 “def” 结尾的所有元素
[class*=”def”]:选择class 属性值中包含子串 “def” 的所有元素
[class|=”def”]:选择class 属性值等于“def”或以“def-”开头的元素(这个是特定属性匹配)

后代选择器

选择某个元素的后代的元素:
selenium举例:
(By.CSS_SELECTOR,‘div button’),div元素的所有的后代元素中标签为button元素,不管嵌套有多深;

子代选择器

选择某个元素的子代元素:
selenium举例:
(By.CSS_SELECTOR,‘div > button’),div元素的所有的子代元素中标签为button元素(>符号前后的空格可有可无)

相邻兄弟选择器

一个元素不好定位时,它的兄长元素很起眼,可以借助兄长来扬名,因此不妨称之为“弟弟选择器”,即选择某个元素的弟弟元素(先为兄,后为弟):
selenium举例:
(By.CSS_SELECTOR,‘button + li’),button与li属于同一父元素,且button与li相邻,选择button下标签为li的元素

伪类选择器

  • 动态伪类(Dymaic pseudo-classes)
    超链接相关的伪类,相对于超链接的几种状态,:link/:visited/:hover/:active
    还有:focus。这类伪类不好用于元素定位,不做深究,不求甚解。

  • first-child/nth-child(n)/last-child伪类

<!DOCTYPE> 
<ul>
<p>这是个段落</p>
<li>Intert Key</li>
<li>Turn key <strong>clockwise</strong></li>
<li>Push accelerator</li>
</ul>

selenium举例:
(By.CSS_SELECTOR,‘ul li:nth-child(3)’),ul元素的后代元素中,有多个标签为li的元素,选择这些li元素中的第3个
注意,html中必须声明<!DOCTYPE>才能使用-child这种伪类;伪类选择器不区分大小写

References:
http://www.w3school.com.cn/css/css_selector_type.asp
https://www.w3.org/TR/selectors/#pseudo-classes
https://www.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值