5

我正在使用 Selenium RC 和 Firefox 的 chrome-mode 来自动化 Web 应用程序的测试用例。我正在使用 TestNG 框架和 Eclipse 用 Ja​​va 编写脚本。现在到重点:

我在使用 Selenium RC 识别某些 XPath 时遇到问题。我使用 Firefox 的 XPath-Checker 扩展验证了我的 XPath,它没有显示任何错误。然后我在 Selenium IDE 中试用它以确保 XPath 被识别。甚至 IDE 也能识别该元素。但它的 Selenium RC 只是不承认它。我能做些什么来纠正这个问题吗?

具体来说,我试图点击由以下给出的特定区域:

html/body/form/div[@id='someid1']/div[@class='someClass']/div[@id='someid2']/div[@id='someid3']/div[@id='someid4']/div[@title='titleOfTheElement']

然后我也尝试了:

//div[@title='titleOfTheElement']
xpath=//div[@title='Automated User']
xpath=/descendant::div[@title='Automated User']

依然没有!

1) 有人可以建议可能出了什么问题,或者 Selenium 是否已知 XPath 存在问题?

2) 没有任何插件(类似于 XPath 检查器)可以帮助我们以 Selenium RC 的方式查看事物吗?这样我们就可以确定 RC 是否会识别 XPath。

谢谢,
穆根

这是硒代码:

selenium.click("somelink");
selenium.waitForPageToLoad("30000");

boolean flag=false
  do{
    if (selenium.isTextPresent("Some text on the page which loads last"))
    {
      flag=true
    }
  }while(flag=false);


selenium.click("locator for area which is driving me crazy");

现在在最后一步,如果我要单击页面上的其他任何位置(意味着其他定位器),则单击将起作用。

该区域的 HTML 如下所示:

<div id="someid1" style="overflow: hidden;">
<div id="someid2" title="title1" class="someclass">title1</div>
<div id="someid3" title="title2" class="someclass">title2</div>
<div id="someid4" title="required title" class="someclass">required title</div>
<div id="someid5" title="title3" class="someclass">title3</div>
<div id="someid6" title="title4" class="someclass">title4</div>
<div id="someid7" title="title5" class="someclass">title5</div></div>

感谢您对此进行调查。:-)

4

5 回答 5

6

我不确定拥有一个带有标题属性的 div 是否正确。没有其他属性可以用来定位元素吗?

无论如何,这是定位器的 css 版本,以防万一:

css=div[title='Automated User']
于 2009-09-18T13:00:16.837 回答
2

在 Firefox 上运行 Selenium 测试时,我们曾经遇到过 XPath 表达式的问题。

  • 您是否尝试过使用不同的浏览器运行相同的测试?
  • 我记得我们用星号 ( ) 替换了所有元素名称,*这很有帮助。IE

    //*[@id='someid1']/*[@class='someClass']/*[@id='someid2']

于 2009-09-18T13:05:16.673 回答
2

从您的示例中,您应该能够使用目标元素的 ID:

selenium.click("id=someid4");

虽然我怀疑 ID 是动态生成的,但您无法使用此方法。

我看不出以下 xpath 不起作用的任何原因:

selenium.click("//div[@title='required title']");

其他针对它的方法是:

selenium.click("css=div[title='required title']");
selenium.click("css=.someclass:nth-child(4)"); //must be 4th child of parent element

div 是您的实际目标元素吗?它是否响应点击事件?如果有响应单击的子元素,那么您将需要定位它。此外,您可以尝试使用以下命令进行故障排除:

mouseDown
mouseUp
fireEvent
于 2009-09-18T13:24:21.093 回答
0

您确定使用 RC 正确加载了页面,即您是否看到浏览器打开并加载了页面?

于 2009-09-18T11:38:36.320 回答
0

可能是您的脚本比网页快。所以请尝试等待一段时间。就像你可以使用waitForCondition("selenium.isElementPresent("ElementID")","20000");

xpath 似乎没有任何磨损。试试这个它可能会对你有所帮助。

于 2012-01-17T03:05:13.163 回答