用硒发现页面的某个部分

时间:2012-02-17 16:00:11

标签: xpath selenium

我的网页看起来像这样:

<html>
...
<div id="menu">
...
  <ul id="listOfItems">
  <!--- repeated block start -->
    <li id="item" class="itemClass">
    ...
    <span class="spanClass"><span class="title">title</span></span>
    ...
    </li>
  <!-- repeated block end-->
    <li id="item" class="itemClass">
    ...
    <span class="spanClass"><span class="title">title something</span></span>
    ...
    </li>
    <li id="item" class="itemClass">
    ...
    <span class="spanClass"><span class="title">title other thing</span></span>
    ...
   </li>
 </ul>
 ...
 </div>
 ...
 </html>

我想知道标题的xpath是什么(“标题”,“标题”,“其他标题”)。关键是未指定<li>元素的顺序。每次加载页面后可能会有所不同。是否有任何方法如何使用xpath发现页面的某个结构?我有一个关于如何解决这个问题的概念,但是在我要用C#编写迭代来发现我问你的页面之前。

提前致谢!

2 个答案:

答案 0 :(得分:3)

首先,id应该是唯一的,因此你所描绘的网页在测试时效果不佳。

我做了测试,然后让一些XPath定位器用于选择特定的标题(虽然我建议你修复你的网页而不是实际使用它):

//li[@id='item']/span/span
//li[@id='item'][1]/span/span
//li[@id='item'][3]/span/span

如果您正在使用所有三个标题,则可以尝试Dimitre Novatchev's suggestion:

//span[@class='title']

这应该会在页面上显示所有标题。

我想说一件事,但是如果你进入Selenium,我建议你使用download Selenium IDE extension用于Firefox。这对初学者来说是一个很棒的工具。它可以帮助您通过记录网站上的点击次数来进行Selenium测试,还可以帮助您自动生成和测试XPath定位器和其他定位器。

再次:我建议你不要创建一个有重复id元素的网站: - )

答案 1 :(得分:2)

Selenium是否支持XPath表达式,如:

//span[@class='title']

如果是,请使用上面的XPath表达式。它选择XML文档中的每个span元素,其class属性的字符串值为"title"

我建议使用the XPath Visualizer 之类的工具来播放不同的XPath表达式,并查看源XML文档中突出显示的所选节点。