robotframework元素定位实例详解

id、name、class、tag

以百度搜索框为例,可以通过以下4种方式来定位元素(分别是id、name、class、tag)

一、通过元素的id属性来定位元素——id是唯一标识(每个id都是不一样的)

用法:input text id=kw ${value}

二、通过元素的name属性来定位元素,name属性不是绝对唯一的

用法:input text name=wd ${value}

三、通过元素的class属性来定位元素,class属性不是绝对唯一的

用法:input text class=s_ipt  ${value}

四、通过元素的标签名tag来定位元素,标签名不是绝对唯一的

${tags} get webelements tag=input

input text   ${tags}[7]  ${value}

robotframework元素定位实例详解

通过链接元素的文本内容来定位元素(link、partial link)

click element link=新闻 通过全部文本的值

click element partial link=hao12 通过部分文本的值

robotframework元素定位实例详解

通过xpath定位

1.绝对路径定位,从根目录逐级查找(父子关系),这种方式太依赖元素的位置和顺序,稍微调整就会找不到,后期维护成本太高,所以一般不会用绝对定位。(不推荐!

//*[@id="app"]/div[3]/div[1]/div[2]/div[2]/div[2]/div/div[2]/div[2]/div/div/div[1]/button/span/text()

robotframework元素定位实例详解

2.相对路径定位,以//开头,在整个页面中寻找符合定位表达式的元素,不在乎元素的顺序和位置。

路径表达式

@    选取属性

/      表示从根节点选取

//    从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.      选取当前节点

..      选取当前节点的父节点

依据文本查找

//*[text()=”发布服务 ”] --在所有标签元素中查找

//span[text()=”发布服务 ”] --只在span标签元素中查找

部分匹配

contains: //span[contains(text(),”发布服务”)]]

not contains: //td[not(contains(@class,'hidden'))]/div/div/span[4]/div/div/span[text()="上架"]

robotframework元素定位实例详解

starts-with: //td[starts-with[@class,”ivu-table-column”]]

robotframework元素定位实例详解

ends-with: //td[ends-with(@id,"kw")]

and: //span[@class="ivu-progress-text-inner" and contains(text(),'100%')]

robotframework元素定位实例详解

父子、兄弟、相邻节点定位方式详解

1.由父节点定位子节点

//div[@class="ivu-table-header"]/table/thead/tr/th

2.由子节点定位父节点

//a[text()="视频资源管理"]/../../..

robotframework元素定位实例详解

3.兄弟节点定位

通过父节点获取其兄弟节点

//span[text()="请选择状态"]/../../../div[2]/ul[2]/li[contains(text(),"未上架")]

通过xpath轴 哥哥定位弟弟

following-sibling //span[text()="请选择状态"]/../../following-sibling::div[1]/ul[2]/li[contains(text(),"未上架")]

通过xpath轴 弟弟定位哥哥

preceding-sibling //li[contains(text(),"未上架")]/../../preceding-sibling::div[1]/div/span

页面包含多个相同元素的定位

第一种:先通过get webelements 获取全部,然后按索引去定位

${loc}    get webelements    //button/span[text()='确定']

click element ${loc} [index]

索引正向是0,1,2.... 反向是-1,-2,比如一共有10个相同的元素,定位第9个,可以用${loc}[8],也可以用${loc}[-2]

robotframework元素定位实例详解

第二种:

想定位多个相同元素的最后一个

click element (//button/span[text()='确定'])[last()]

想定位倒数第二个

click element (//button/span[text()='确定'])[last()-1]

想定位第二个

(//button/span[text()='确定'])[2]

robotframework元素定位实例详解

css selector

这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解

1.支持ID、Class的定位

input text css=#kw ${value} input text css=.s_ipt ${value}

2.支持任意属性定位

input text css=[name='wd'] ${value}

3.支持标签属性组合定位

input text css=input[name='wd'] ${value}

4.css层级关系

input text css=form#form>span>input ${value}

5.Css Selector模糊匹配

^= 匹配元素属性以什么开头 click button css=input[value^="百度"]

$= 匹配属性以什么结尾 click button css=input[value$="一下"]

*= 匹配属性包含什么值 click button css=input[value*="一下"]

robotframework元素定位实例详解

自动化测试

Robot Framework常用库和常用关键字

2022-9-29 10:06:16

自动化测试

robotframework框架的驱动模式

2022-9-29 10:51:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索