selenium定位大全

写在之前-关于使用优先级
P0:selenium自带的基础定位
P1:css定位
P2:xpath定位(遍历DOM树。生成xml文件,再去匹配xpath)
P3:js定位

xpath-路径选择器:定位根据的是路径来定位,位置是唯一确定的
css-样式选择器:是根据元素的样式定位的相对来说

xpath可以根据子类定位父类,css目前不可以(有个has但是在实验阶段)

定位方式:

1.根据单一元素属性查找:
绝对定位
2.根据范围元素属性查找
范围定位
3.如何用css定位:

通过id:#value

通过classname:.value

通过标签名:tag1>tag2>tag3

通过标签名+元素属性结合:
tag1.value>tag2#values>tag3[attribute=value]

通过模糊匹配标签名+元素属性结合:
tag1>tag2>tag3[attribute^=value] (匹配以value开头的属性)
tag1>tag2>tag3[attribute$=value](匹配以value结尾的属性)
tag1>tag2>tag3[attribute*=value](匹配包含value任意位置的属性)

通过同级元素并行:
#value.values(匹配id是value,classname是values的属性)

4.如何用xpath定位:
// 层级下所有元素, /紧跟着的第一个元素

通过属性=值://tag[@attribute='value'](tag可以为*,意为全部标签名)
eg://input[@id='kw']

通过同级元素并行:
//tag[@attribute='value' and @attributes='values']

通过层级:
/html/body/div[@attribute='value']
/html/body/div[1]

通过模糊匹配标签名:
//tag[starts-with(@attribute,'value')](匹配以value开头的属性)

//tag[ends-with(@attribute,'value')](匹配以value结尾的属性,要注意的是,ends-with只支持xpath2.0)

可以使用substring,string-length这种模式来构建(如果你的方案是一次性的还行,否则不推荐):
//tag[substring(@attribute, string-length(@attribute) - string-length('value') + 1) = 'value']

//tag[contains(@attribute,'value')](匹配包含value任意位置的属性)

通过已知子节点找父节点:
//tag[contains(@attribute,'value')]//parent::tag[@attribute='value']

通过已知节点找其前面平行节点:
//tag[contains(@attribute,'value')]//preceding-sibling::tag[@attribute='value']

通过已知节点找其后面平行节点:
//tag[contains(@attribute,'value')]//following-sibling::tag[@attribute='value']

通过文字匹配:
//tag[text()='value']
(定位也可以与模糊匹配结合eg://tag[starts-with(text(),'value')])

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值