Web自动化之元素定位

Web自动化之元素定位

前提:元素或属性必须唯一

八种元素定位方式:id,name,link_text,partial_link_text,xpath,css,class_name,tag_name

1、id定位:

HTML规定id是唯一标识(每个id都是不一样的),这类似公民的身份证号,具有很强的唯一性。

  

2、name定位:

name属性不是绝对唯一的(一个页面内可能存在多个元素的name属性是相同的)

 

3、link_text定位:

通过链接元素的文本内容来精确匹配定位元素,不是绝对唯一的(一个页面内可能存在多个链接元素的文本内容是相同的)

 

4、partial_link_text定位:

通过链接元素的文本内容来模糊匹配定位元素,不是绝对唯一的(一个页面内可能存在多个链接元素的文本内容是相同的)

5、xpath定位:

(1)绝对路径(以/开头,从根目录逐级查找):【一般不会用到绝对路径】

如百度页面的输入框的绝对路径,可右键copy某元素的完整xpath

xpath=/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

 

(2)相对路径(以//开头,从网页的任务标签开始查询元素):

以百度输入框为例子:

① 相对路径+索引定位

xpath=//form//span[1]//input

② 相对路径+属性定位

xpath=//input[@autocomplete="off"]

③ 相对路径+部分属性值定位

以什么开头:xpath=//input[starts-with(@autocomplete,'of')]

以什么结尾:xpath=//input[substring(@autocomplete,2)='ff']

包含:xpath=//input[contains(@autocomplete,'ff')]

④ 相对路径+通配符定位(右键copy复制xpath,但一般不建议使用)

//*[@id=kw]

⑤ 相对路径+文本定位(只适用于超链接):

//span[text=’按图片搜索’]

 

6、css定位:

(1)绝对路径:不会使用

(2)通过id#)和Class.)定位

通过id定位:css=input#kw#kw

通过class定位:css=.s_iptimput.s_ipt

(3)相对路径:

通过属性定位:css=input[autocomplete="off"]

通过部分属性值定位:

以什么开头:css=input[autocomplete^='of']

以什么结尾:css=input[autocomplete$='ff']

包含:css=input[autocomplete*='ff']

通过子节点定位:

css=form#form>span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input.s_ipt

或将>替换为空格:css=form#form span.bg.s_ipt_wr.new-pmd.quickdelete-wrap input.s_ipt

 

css=div#s-top-left>a:nth-child(2)或将>替换为空格:css=div#s-top-left a:nth-child(2)

通过兄弟节点:

css=div#s-top-left>a +a

7、class_name定位:

通过元素的class属性来定位元素,class属性不是绝对唯一的(一个页面内可能存在多个元素的class属性是相同的)

8、tag_name定位:

HTML是通过tag来定义功能的,比如input是输入,table是表格等等。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,atag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。

posted @ 2022-01-08 21:43  钟胜一  阅读(175)  评论(0编辑  收藏  举报