Xpath学习总结(二)

之前总结了使用常见的Xpath来定位页面的元素,其实Xpath提供了非常丰富的函数,可供我们定义页面上任何一个元素,但是如果仅仅只是为了满足自动化定位元素的需求的话,常见的几种方式就足够,他们既简单又高效,下面一些是最近遇到的Xpath,我们也可以使用它们来定位。

1. parent关键字

作用:获取当前节点的父节点

实例:以下面HTML为例

<div id="menu">
	<ul>
		<li class="first">
			<a id="book"></a>
		</li>
		<li>
			<a id="food"></a>
		</li>
		<li>
			<a id="clothes"></a>
		</li>
		<li>
			<a id="furniture"></a>
		</li>
	</ul>
	<a href="....">Welcome to Our Store</a>
</div>

parent的例子: //a[id='book']/parent::li

     因为我们用了/所以,它将取得id为book的a元素的直接父节点,即第一个li元素,等同于使用//li[@class='first']来查找。

2. child关键字

作用:获取当前节点的子节点

实例:还是以上述HTML为例

//div[@id='menu']/child::a, 将取得id为menu的div下的直接子节点a元素,如果有多个a的话,都会被选中。

3. 方括号加数字

用法:(Xapth)[数字]

还是以上述例子为例,当我们用//div[@id="menu"]//ul//li时所有的li元素都会被选中:

我们使用方括号和数字即可选中某一个特定的li元素,例如:(//div[@id="menu"]//ul//li)[3],只选择第三个li元素:

注意:这种方法需要谨慎使用,除非没有更好的选择,否则不要采用这种定位方法,因为元素的顺序可能会发生变化,一旦顺序改变,原有的Xpath将失效,需要重新定义,这将使自动化很不易于维护。

下面是使用Xpath定位时的一些建议:

1. 如果有id, name尽量使用它们,因为它们通常情况下唯一且不会经常改变

2. text()很好用,特别是跟contains关键字搭配,但是,如果被测系统支持多语言,自动化需要在不同的语言上运行,就不要使用这个定位方式了,否则自动化根本无法跑起来,当然有解决的办法,我们在后面可以一起学习

3. 确保Xpath可以唯一定位到要查找的元素,可以使用多层(一般情况下两到3层就够了),但是不要太多,否则会影响自动化的性能

4. 不要在text()里使用=,用contains或者starts-with等关键字

5. 不要依赖元素顺序来定位,除非已经确定顺序不会轻易改变

6. 使用高效的工具来定位元素吧,将会减少很多时间噢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值