XPath(5)

         我们在使用Selenium写测试用例的时候,如果元素存在id或者name属性,那么使用id,name定位最方便,如果没有id或者是name或者是很不好定位等等,免不了要用到XPath定位。XPath 是一种XML的查询语言,我们使用的html也是xml形式的语言。开始学习时,可以借助一些工具,如Chrome中的“审查元素“和FireFox中的”XPath checker“等等。使用XPath表达式的开头加上"xpath="是好习惯也可以不加.如下面的两个效果是一样的:

//div/input

xpath=//div/input

下面介绍它的使用方法。

另外需要知道的是:xpath表达式匹配到的内容有多个时,seleium默认的是取第一个

XPath中的一个斜线(/)代表这是一个绝对路径,表示从根节点选取(表示经过一层,直接定位元素)。两个斜线(//)这是一个相对路径,从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(代表可以经过很多层,此节点下面所有符合此模式的元素都会被选出来,即使是处于不同的层也会被选出来)。例如:

<html>
<head>
<title>测试一下 </title>
</head>
<body>
<divid="wrapper" name="wra">
<divid="content">
<divid="u">
<ahref="http://www.baidu.com/gaoji/preferences.html"name="tj_setting">搜索设置</a>
</div>
</div>
</div>
<divid="m">
<pid="lg"><img src="http://www.baidu.com/img/bdlogo.gif"width="270" height="129"></p>
</div>
<div>
<p>ppppp</p>
<script> var_trace_page_logid = 0485856956; </script>
</div>
</body>
</html>


如果要查找head下面的title,XPath是:

/html/head/title

下面的XPath会把所有的div都给找出来。

//div

下面介绍几种常用的方法:

  • 选择不确定元素: * 

例如,要选择所有的元素: //*

例如,选择第三层下的div:/*/*/div

  • 选择分支:使用中括号可以选择分支

XPath中元素的定义是从1开始的。选择第一个元素:

//div[1] 或者是 //div

XPathj并没有定义 first() 这种函式喔,用上面的[1]就可以取出第一个元素。但是有一个选择最后一个元素的函数last:

/html/body/div[last()]

选择子元素也可以采用名字来进行定位,以下语法选出含有script子元素的所有div元素。

/html/body/div[script]

以下语法选出含有p=ppp子元素的所有div元素。

/html/body/div[p=ppp]

使用Or操作数(|)就可以选择一个以上的路径。例如:

/html/body/div | div/p

选择所有title以及div元素

//title | //div

  • 选择属性

在XPath中,除了选择元素以外,也可以选择属性。属性都是以@开头。例如选择文件中所有叫做country的属性。

//@id

选择所有含有id这个属性的div元素:

//div[@id]

以下语法选择出含有属性的所有div元素

//div[@*]

以下语法选择出id属性值为wrapper的div元素

//div[@id=' wrapper ']

 选择多个属性

//cd[@id=' wrapper '][@ name="wra"]

例如

<input type="button"value="divide" οnclick="divide()">

//input[@value=’divide’]

  • 还有很多的函数来帮助进行定位

例如:Contains函数,starts-with函数等,定位包含“腾讯qq“文本的链接

//a[contains(text(),'腾讯qq')]  

定位属性class包含heading的span元素

//span[contains(@class, 'heading')]

//input[starts-with(@id, 'text-')]

//*[contains(name(),'a')]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值