html查找元素的常用方法,元素定位常用方法

单个元素常用定位利器

1.id定位(使用id属性值定位):find_element_by_id("value")

2.name定位(使用name属性值定位):find_element_by_name("value")

3.class定位(使用class属性值定位):find_element_by_class_name("value")

4.tag定位(使用标签名定位):find_element_by_tag_name("value")

5.link定位(使用显示文本定位):find_element_by_link_text("value")

6.partial_link定位(使用超链接文本定位):find_element_by_partial_link_text("value")

7.xpath定位(使用xpath定位):find_element_by_xpath("value")

8.css定位(使用CSS选择器定位):find_element_by_css_selector("value")

多个元素常用定位利器

element表示单个元素直接定位,elements是复数形式代表一组元素的定位

1.id定位(使用id属性值定位):find_elements_by_id("value")

2.name定位(使用name属性值定位):find_elements_by_name("value")

3.class定位(使用class属性值定位):find_elements_by_class_name("value")

4.tag定位(使用标签名定位):find_elements_by_tag_name("value")

5.link定位(使用显示文本定位):find_elements_by_link_text("value")

6.partial_link定位(使用超链接文本定位):find_elements_by_partial_link_text("value")

7.xpath定位(使用xpath定位):find_elements_by_xpath("value")

8.css定位(使用CSS选择器定位):find_elements_by_css_selector("value")

xpath定位拓展

xpath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,selenium用户可使用这种强大语言在web应用中定位元素

1.逐级定位元素

语法:driver.find_element_by_xpath("/html/body/form/input")

语义:根据HTML逐级往下查找元素路径位置

2.定位父元素下的第N个元素

语法:driver.find_element_by_xpath("//form/input[2]")

语义:定位父元素form节点下的第2个input元素

3.定位父元素下的最后一个元素

语法:driver.find_element_by_xpath("//form/input[last()]")

语义:定位父元素form节点下的最后一个input元素

4.定位父元素下的倒数第N个元素

语法:driver.find_element_by_xpath("//form/input[last()-1]")

语义:定位父元素form节点下的倒数第2个input元素

5.定位父元素下位置小于N的元素

语法:driver.find_element_by_xpath("//form/input[position()<3]")

语义:定位父元素form节点下的位置小于3的input元素

6.查找匹配的属性值定位

语法:driver.find_element_by_xpath("//input[@value='female']")

语义:查找input节点下带有value属性值为female的元素

7.定位父元素下规定属性值且属性值大于number的元素

语法:driver.find_element_by_xpath("//form/input[@value>1]")

语义:定位父元素form节点下带有value属性,且属性值大于1的元素

8.定位父元素下规定属性值且属性值小于number的元素

语法:driver.find_element_by_xpath("//form/input[@value<1]")

语义:定位父元素form节点下带有value属性,且属性值小于1的元素

9.匹配路径1和路径2

语法:driver.find_elements_by_xpath("//form/input|//form/a")[2]

语义:定位form元素节点下所有的input元素和所有a元素

10.匹配包含指定文本的元素

语法:driver.find_element_by_xpath("//form/a[contains(text(),'点击访问百度')]")

语义:定位a标签下,包含文本'点击访问百度'的元素

CSS选择器定位拓展

1.常见语法介绍

例如这样一段html代码的网页

Heading

CatDogCarGoat

匹配示例:

locator

匹配

语法

css=div

< div > div >

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

css=div.formdiv

< div class="formdiv" > div >

”.”表示class选择器,匹配所有class属性中包含formdiv的元素

css=ul#recordlist

< ul id="recordlist" >< /ul >

“#”表示id选择器,ul标签下匹配所有id属性等于recordlist的元素

css=div.subdiv p

< div class="subdiv" >< p >one< /p >< /div >

空格表示后代元素选择器,匹配所有属于div.subdiv元素后代的p元素,div.subdiv和p之间用空格分隔

css=div.subdiv > ul > p

< div class="subdiv" >< ul >< p >one< /p >< /ul >< /div >

”>”表示子元素选择器,匹配所有ul元素的子元素p

css=form + div

< form >one< /form >< div >two< /div >

“+”表示毗邻元素选择器,匹配紧随form元素之后的同级元素div(只匹配第一个)

css=p ~ li

< p >Heading< /p >< li >Cat< /li >

“~”表示同级元素选择器,匹配所有在p元素之后的同级li元素

css=form > input[name=’user’]

< form >< input name="user" >< /form >

form的子节点input节点下属性name的值为user的元素

css=input[name$=’id’][value^=’SYS’]

< input value="SYS123456" name="vid" type="hidden" >

“$”表示属性name的值以id结尾且“^”表示属性value的值以SYS开头的input元素

css=input:not([name$=id][value^=SYS])

< input name="username" type="text" >< /input >

““:not”表示匹配不符合当前选择器的任何元素,与上种情况刚好相反

css=li:contains('Goa')

< li >Goat< /li >

“:contains”表示li节点下内容中包含Goa的元素

css=li:not(contains('Goa'))

< li >Cat< /li >

“:not(contains)”表示li节点下内容中不包含Goa的元素,与上种情况刚好相反

#### 2.css中的结构性定位

下面提供一段html代码的网页

Heading

CatDogCarGoat

locator

匹配

语法

css=ul > li:nth(0)

< li >Cat< /li >

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

css=ul > *:nth(0)h和css=ul > :nth(0)

< p >Heading< /p >

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

css=ul > li:first

< li >Cat< /li >

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

css=ul > :first

< p >Heading< /p >

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

css=ul > *:last和css=ul > li:last

< li >Goat< /li >

1.在其父元素中的ul子元素集合中排在最后1个的元素。2.在其父元素中的ul子元素集合中排在最后1个的li元素

css=ul > li:even

< li >Cat< /li >< li >Car< /li >

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

css=ul > li:odd

< li >Dog< /li > < li >Goat< /li >

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

css=ul > li:lt(2)

< li >Cat< /li >

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

css=ul > li:gt(2)

< li >Goat< /li >

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

css=ul > li:only-child和css=ul > :only-child和css=ul > *:only-child

[error]not found(ul没有only-child)

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

css=div.subdiv > :only-child

< ul id="recordlist" >< /ul >

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

3.下面是一些XPATH和CSS的同义locator比较

定位方式

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

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://example.com/article/selenium-location/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值