selenium——元素定位

关于定位元素,可以通过id,name,xpath,link,css,tag等定位。

Id定位:id=kw

Name定位:name=wd

Xpath定位:xpath=//input[@id='kw']

Link定位:link=link_text     

Css定位:css=#kw

Tag定位:tag=input

1.  id 和 name 定位

假如把一个元素看作一个人的话,id 和 name 可以看作一个人的身份证号和姓名。当然,这些属性值是否唯一要看前端工程师如何设计了。

locator:用于定位页面元素,常见的locator有id、name,因为id是最方便的,所以有的公司要求开发人员给每个元素加上id。                      如果没有id,可以用name,但是name可以是同名的,可以有多个页面元素使用同一个name,这就给定位带来了困难。

例如输入框的id=kw

在robotframework中可以使用:                                                                                                                                                           

 

2 xpath 定位                                                                                                                                                                

XPath 是一种在 XML 文档中定位元素的语言.                假如,一个人没身份证号没名字怎么找呢?想想你是怎么找朋友吃饭的,他手机不通,电话不回呢? 直接上他家去呗,那你一定有他家住址,xx 市 xx 区 xx 路 xx 号。 xpath 就可以通过这种层级关系找到元素。                                                                                                                                                                                           

1、xpath 的绝对路径:

xpath=/html/body/div[1]/div[4]/div[2]/div/form/span[1]/input
我们可以从最外层开始找,html 下面的 body 下面的 div 下面的第 4 个 div 下面的....input 标签。通过 一级一级的锁定就找到了想要的元素。

2、xpath 的相对路径: 

绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。

2.1、元素本身:
Xpath 同样可以利用元素自身的属性:
Xpath=//*[@id=’kw1’]
//表示某个层级下,*表示某个标签名。@id=kw1 表示这个元素有个 id 等于 kw1 。
当然,一般也可以制定标签名:
Xpath=//input[@id=’kw1’]
元素本身,可以利用的属性就不只局限为于 id 和 name ,如:
Xpath=//input[@type=’text’]
Xpath=//input[@autocomplete=’off’]
但要保证这些元素可以唯一的识别一个元素。

2.1、找上级:
当我们要找的一个人是个刚出生的婴儿,还没起名子也没有入户口(身份证号),但是你会永远跟在
你父亲的身边,你的父亲是有唯一的名字和身份证号的,这样我们可以先找到你父亲,自然就找到你的。
元素的上级属性为:

<form id="form1" class="fm" action="/s" name="f1">
<span class="bg s_ipt_wr">
   <input id="kw1"class="s_ipt"type="text"maxlength="100"name="wd"utocomplete="off"> 

找爸爸:xpath =//span[@class=’bgs_ipt_w’]/input                                                                                                                              如果爸爸没有唯一的属性,可以找爷爷:xpath =//form[@id=’form1’]/span/input
这样一级一级找上去,直到 html ,那么就是一个绝对路径了。

2.3、布尔值写法:
如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三 并且 身份证号为 123 的 人却可以唯一的确定一个人。那么可以这样写:
Xpath=//input[@id=’kw1’and@name=’wd’]
可以 and ,当然也可以 or:
Xpath=//input[@id=’kw1’or@name=’wd’]
但 or 的实际意义不太。我们一般不需要说,找的人名字或者叫张三,或者身份证号是 123 也可以。

2.4 css 定位
       CSS(CascadingStyle Sheets)是一种语言,它被用来描述 HTML 和 XML 文档的表现。CSS 使用选择器 来为页面元素绑定属性。这些选择器可以被 selenium 用作另外的定位策略。
CSS 可以比较灵活选择控件的任意属性,一般情况下定位速度要比 XPath 快,但对于初学者来说比较 难以学习使用,下面我们就详细的介绍 CSS 的语法与使用。


通过 class 属性定位:
css=.s_ipt
css=.bgs_btn
csscss_selector()方法用于 CSS 语言定位元素,点号(.)表示通过 class 属性来定位元素。
通过 id 属性定位:
css=#kw
css=#su
井号(#)表示通过 id 属性来定位元素。
通过标签名定位:
css=input
在 CSS 语言中用标签名定位元素不需要任何符号标识,直接使用标签名即可,但我们前面已经了解到 标签名重复的概率非常大,所以通过这种方式很难唯一的标识一个元素。
通过父子关系定位:
css=span>input
上面的写法表示有父亲元素,它的标签名叫 span,查找它的所有标签名叫 input 的子元素。
通过属性定位:
css=input[autocomplete='off']
css=input[maxlength='100']
css=input[type='submit']
在 CSS 当中也可以使用元素的任意属性,只要这些属性可以唯一的标识这个元素。
组合定位:
我们当然可以把上面的定位策略组合起来使用,这样就大大加强了元素的唯一性。

css=span.bgs_ipt_wr>input.s_ipt
css=span.bgs_btn_wr>input#su

有一个父元素,它的标签名叫 span,它有一个 class 属性值叫 bg s_ipt_wr,它有一个子元素,标签名 叫 input,并且这个子元素的 class 属性值叫 s_ipt。

猜你喜欢

转载自blog.csdn.net/zangba9624/article/details/108542976