Selenium * ElementPresent和* XpathCount给出不同的结果?

时间:2011-02-10 20:20:36

标签: selenium

我为同一个定位器获得了不同的结果。例如

//table[@id='foo']
测试ElementPresent

返回true,但XpathCount返回0。在Selenium v​​1.0.10 IDE中,Find按钮突出显示两个函数的正确元素。关于可能导致这种情况的任何想法?

注意:

  • 我们在页面上有框架编辑:这可能是问题所在。赏金验证。
  • 页面上有很多表格,但只有一个表格的@id为“foo”
  • Firefox 3.6
  • 适用于IDE和Java RC

3 个答案:

答案 0 :(得分:1)

嗯,这不是非验证的验证。

我使用Selenium来测试带有框架的GUI。要使isElementPresent和getXpathCount工作,我总是必须先用selectFrame选择一个框架(甚至让isElementPresent正常工作)。通过打开一个URL,似乎根本没有选择框架。

这就是HTML和相应的selectFrame代码:

<frameset id="mainframeset"><frame name="nav" id="nav" src....

selenium.selectFrame("nav");

答案 1 :(得分:0)

使用这些XPath表达式

boolean(//table[@id='foo'])

count(//table[@id='foo'])

如果table元素的id属性值为"foo",则上面的第一个表达式应评估为true(),上面的第二个表达式应评估为正整数。

答案 2 :(得分:0)

不是这个问题的直接答案,而是一个解决方法,如果你正在阅读这个并希望循环这些元素。在for循环中使用isElementPresent,如下所示:

for(int i = 2; selenium.isElementPresent("//table[@id='foo']//tr["+i+"]"); i++)
{
    selenium.getText("//table[@id='foo']//tr["+i+"]//td["+columnNum+"]");
}

请注意,我们从2开始,因为XPath是从1索引的,我们想跳过标题