使用路径方法查找网页元素


相对于使用属性方式定位网页元素,路径方式是另一种定位网页元素的方法,路径方式可以准确地定位到正确的网页元素,速度也比属性方式快一些。和窗口的层级关系一样,一个网页中的元素之间也是一种层级关系,一个网页元素可以包括一个或是多个子元素,通常最顶层的网页元素就是/HTML>。从最顶层到目标元素顺序经过的元素就组成了一个网页元素路径。在本软件中,路径的书写语法如下:

/网页元素类别1[过滤条件表达式][索引号]/网页元素类别1[过滤条件表达式][索引号)..

每一个结点必须以左括号开始,右括号结束。

  • 多个结点 以点号分隔。左括号后紧接的是网页元素的类别名称。结点可以用通配符*和?,*表示任意层次任意类别,?表示单一层次的任意网页元素,请参见例三。
  • 过滤条件表达式 是可选的,如果有,必须以方括号括起来,并且在网页元素类别名后面。表达式语法及运算符请参见如何使用变量和表达式。注意:窗口过滤表达式中是不能直接使用变量的,具体请参见下面的例子。过滤表达式中可以使用的属性请参见后面
  • 索引号 也是可选的,如果有用括号引起来放在右尖括号后面,用于指定满足条件的第几个网页元素(注:网页元素的顺序号是由它在父网页元素中的前后顺序决定的),当有多个网页元素会满足条件的情况下有用。默认情况下,索引号是以0开始的,0表示第一个,1表示第二个,依次类似。

例一:

/HTML/BODY/P/A

一个简单的网页元素路径。表示网页下的一个超级连接(A)。

例二:

/HTML/BODY/P[6]/A[href ct "about.htm"]

带有条件过滤的网页元素路径,最后一个元素带有过滤条件,href必须包含"about.htm",第三层中的/P[6]带有索引号,表示是BODY元素下的第6个P元素。

例三:

/HTML/BODY/*/A[href ct "about.htm"]

带通配符和过滤表达式的网页元素路径。表示/HTML/BODY>下的一个A元素,此A元素的href属性必须包含有"about.htm"。使用了通配符*表示不关心中间这一层是什么元素。下面三个路径指向的元素都将符合上面的路径。

/html/body/div/a[href ct "about.htm"]
/html/body/li/a[href ct "about.htm"]
/html/body/div/p/a[href ct "about.htm"]>

例四:

/html/body?./a[href ct "about.htm"]

使用了通配符?,表示不关心中间层的网页元素类别名,和通配符*不同,只能代表一层,比如下面路径的按钮将不会符合条件:

/html/body/div/p/a[href ct "about.htm"]

窗口路径中过滤表达式支持的窗口属性

在窗口过滤条件表达式中,可以使用的所有HTML规范中的元素属性,具体请参见HTML的规范文档,另外对于CSS属性,需要使用style.引导,如:

/html/body/div/p/a[style.border=1]
/html/body/div/p/a[style.color="red"]

更多

  • 尽可能使用"抓取工具"来得到网页元素的信息。抓取网页元素可以将鼠标在"抓取工具"处按下不要放开,然后将鼠标移到指定的元素, 然后鼠标键即可自动得到网页元素的路径。

>