定位方式id、name、class、xpath、css
id、name定位
这两个都简单直接就是id=或者name=
但是我在使用中好多都没有id和name所以直接用xpath和css了
例class中有空格:
<div class="el-dialog__footer">
<dv class="clearfix">
<button type="button" class="el-button fl el-button--default">
<!---->
<!---->
<span>取消</span>
</button>
<button type="button" class="el-button el-button--success">
<!---->
<!---->
<span>保存</span>
</button>
<button type="button" class="el-button el-button--primary">
<!---->
<!---->
<span>发布</span>
</button>
</dv>
</div>
选择其中一个或多个同时定位,只要唯一就行
class定位
如果有多个类名,只能使用其中一个
class=el-button #不唯一,定位出来有多个
class=el-button--success
class=el-button el-button--success #这种无法使用
xpath定位
绝对路径:
xpath=/html/div/dv/button[@class="el-button el-button--success"]
如果属性都一样可以用下标,但是感觉不怎么靠谱,有可能你打开一个页面后再关闭了,可能动态插入一个未显示的元素使顺序变了就会定位失败
xpath=/html/div/dv/button[2]
相对路径,button标签下的元素:
#下面这中写法必须要对应属性完全相等且属性值不能打乱
xpath=//button[@class="el-button el-button--success"]
xpath=//button[@class="el-button--success el-button"] #定位不到,因为顺序错误
xpath=//button[@class="el-button"] #定位不到元素,例子中没有class属性只包含el-button的元素
xpath=//button[@class="el-button--success"] #定位不到元素
xpath=//button[contains(@class,"el-button--success")] #这中可以不完全包含,但顺序也不能错
可以越级
xpath=//div//button[@class="el-button el-button--success"]
任意标签下的元素:
xpath=//*[@class="el-button el-button--success"]
通过文本定位:
xpath=//button[text()="保存"]
xpath=//button[contains(text(),"保")]
多个属性
xpath=//button[text()="保存" and @class="el-button el-button--success"]
xpath=//button[text()="保存" or @class="el-button el-button--success"]
xpath轴
轴名称 | 描述 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等) |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
attribute | 选取当前节点的所有属性 |
child | 选区当前节点的所有子元素 |
descendant | 选取当前节点的所有后代元素(子、孙等) |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身 |
following | 选取当前节点的结束标签之后的所有节点 |
namespace | 选取当前节点的所有命名空间节点 |
parent | 选取当前节点的父节点 |
preceding | 选取文档中当前节点的开始标签之前的所有节点 |
preceding-sibling | 选取当前节点之前的所有同级节点 |
self | 选取当前节点 |
例:
#定位取消按钮
xpath=//button[text()="保存"]/ancestor::div/dv/button[1]
xpath=//button[text()="保存"]/ancestor::dv/button[1]
xpath=//button[text()="保存"]/parent::dv/button[1]
css定位
选择器 | 例子 | 例子描述 |
---|---|---|
.class | .intro | 选择 class=“intro” 的所有元素。 |
#id | #firstname | 选择 id=“firstname” 的所有元素。 |
* | * | 选择所有元素。 |
element | p | 选择所有 <p> 元素。 |
element,element | div,p | 选择所有 <div> 元素和所有 <p> 元素。 |
element element | div p | 选择 <div> 元素内部的所有 <p> 元素。 |
element>element | div>p | 选择父元素为 <div> 元素的所有 <p> 元素。 |
element+element | div+p | 选择紧接在 <div> 元素之后的所有 <p> 元素。 |
[attribute] | [target] | 选择带有 target 属性所有元素。 |
[attribute=value] | [target=_blank] | 选择 target="_blank" 的所有元素。 |
[attribute~=value] | [title~=flower] | 选择 title 属性包含单词 “flower” 的所有元素。 |
[attribute|=value] | [lang|=en] | 选择 lang 属性值以 “en” 开头的所有元素。 |
类名有空格的可将空格换成.,也可以只取一个,唯一就行
css=.el-button.el-button--success #这种可以打乱属性值的顺序
css=.el-button--success.el-button #这种也能正常定位
#上面这个可能出问题,页面搜索是绝对匹配可能唯一,使用时只要同时包含这两个类名就会匹配出来,例如下面这个元素也能找到
“el-button tree-btn-plus el-tooltip el-button--success el-button--mini is-plain is-circle”
css=.el-button #会定位到多个
css=.el-button--success
获取属性
获取文本:
${page} Get Element Attribute xpath=//*[@class="el-button el-button--success"] textContent
获取class:
${activepage} Get Element Attribute xpath=//*[@class="el-button el-button--success"] class