欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于selenium的CSS

程序员文章站 2022-07-13 10:57:18
...

经过将近两年半自动化的经验(两年selenium相关经验)对于selenium对元素的定位,常用的几种ID,CLASS之类的没必要说了在这里,对于一些不规范的前端代码 我想我最喜欢用的事CSS定位。

优势1:一般情况下定位速度要比XPATH

优势2:语法要比XPATH更简洁更易懂

优势3:对于页面结构的变化对其影响并不像XPATH那么大

当然还有很多因素是我的个人喜好

下面列出一些常用的CSS定位的一些常用语法 这里不剧烈了有需要的可以给我留言我会一一解答

*

通用元素选择器,匹配任何元素

E

标签选择器,匹配所有使用E标签的元素

.info

class选择器,匹配所有class属性中包含info的元素

#footer

id选择器,匹配所有id属性等于footer的元素

E,F

多元素选择器,同时匹配所有E元素或F元素,EF之间用逗号分隔

E F

后代元素选择器,匹配所有属于E元素后代的F元素,EF之间用空格分隔

E > F

子元素选择器,匹配所有E元素的子元素F

E + F

毗邻元素选择器,匹配紧随E元素之后的同级元素F (只匹配第一个)

E ~ F

同级元素选择器,匹配所有在E元素之后的同级F元素

E[att='val']

属性att的值为valE元素 (区分大小写)

E[att^='val']

属性att的值以val开头的E元素 (区分大小写)

E[att$='val']

属性att的值以val结尾的E元素 (区分大小写)

E[att*='val']

属性att的值包含valE元素 (区分大小写)

E[att1='v1'][att2*='v2']

属性att1的值为v1att2的值包含v2 (区分大小写)

E:contains('xxxx')

内容中包含xxxxE元素

E:not(s)

匹配不符合当前选择器的任何元素

E:nth(n)

E:eq(n)

在其父元素中的E子元素集合中排在第n+1个的E元素 (第一个n=0)

E:first

在其父元素中的E子元素集合中排在第1个的E元素

E:last

在其父元素中的E子元素集合中排在最后1个的E元素

E:even

在其父元素中的E子元素集合中排在偶数位的E元素 (0,2,4…)

E:odd

在其父元素中的E子元素集合中排在奇数的E元素 (1,3,5…)

E:lt(n)

在其父元素中的E子元素集合中排在n位之前的E元素 (n=2,则匹配0,1)

E:gt(n)

在其父元素中的E子元素集合中排在n位之后的E元素 (n=2,在匹配3,4)

E:only-child

父元素的唯一一个子元素且标签为E

E:empty

不包含任何子元素的E元素,注意,文本节点也被看作子元素

  xpath css

标                       签  

//div 

div 

By id

//div[@id='eleid'] 

div#eleid 

By class

//div[@class='eleclass']
//div[contains(@class,'eleclass')]

div.eleclass 

By 属性

//div[@title='Move mouse here']

div[title=Move mouse here]
div[title^=Move]
div[title$=here]
div[title*=mouse]

定位子元素

//div[@id='eleid']/*
//div/h1 

div#eleid >*
div#eleid >h1

定位后代元素

//div[@id='eleid']//h1

div h1 

By index

//li[6]

li:nth(5)

By content

//a[contains(.,'Issue 1164')]

a:contains(Issue 1164)

根据子元素回溯定位父元素

//li[a[contains(.,'Issue 1244')]]
//*[./a[contains(.,'Issue 1244')]]

//ul[.//a[contains(.,'Issue 1244')]]

li{a:contains(Issue 1244)}
ul{a:contains(Issue 1244)}

根据邻近元素定位

//li[preceding-sibling::li[contains(.,'Issue 1244')]]
//ul[preceding-sibling::ul[.//a[contains(.,'Issue 1244')]]]

css=li:contains(Issue 1244) + li
css=ul{a:contains(Issue 1244)} ~ ul

以上可供参考 有些方法可能针对不同版本的selenium,有些不同或者有的会失效具体列子具体分析了

 

相关标签: selenium css