Selenium RC在XPath方面存在问题

Selenium RC在XPath方面存在问题,xpath,selenium,selenium-rc,Xpath,Selenium,Selenium Rc,我正在使用Selenium RC和Firefox的chrome模式来自动化web应用程序的测试用例。我正在使用TestNG框架和Eclipse用Java编写脚本。现在谈谈要点: 我在Selenium RC识别某些XPath时遇到问题。我使用Firefox的XPath Checker扩展验证我的XPath,该扩展没有显示任何错误。然后,我在SeleniumIDE中试用它,以确保XPath被识别。甚至IDE也能识别元素。但它的硒RC只是不承认它。我能做些什么来纠正这个问题吗 具体来说,我尝试单击以下

我正在使用Selenium RC和Firefox的chrome模式来自动化web应用程序的测试用例。我正在使用TestNG框架和Eclipse用Java编写脚本。现在谈谈要点:

我在Selenium RC识别某些XPath时遇到问题。我使用Firefox的XPath Checker扩展验证我的XPath,该扩展没有显示任何错误。然后,我在SeleniumIDE中试用它,以确保XPath被识别。甚至IDE也能识别元素。但它的硒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代码:

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");
<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>
现在,在最后一步中,如果我要单击页面上的任何其他位置(意味着其他定位器),单击都会起作用

该区域的HTML如下所示:

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");
<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>

标题1
标题2
法定头衔
标题3
标题4
标题5

感谢您对此进行深入研究。:-)

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

我不确定是否使用带有title属性的div。没有其他属性可以用来定位元素吗

无论如何,这是定位器的css版本,以防它起作用:

css=div[title='Automated User']

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

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

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


根据您的示例,您应该能够使用目标元素的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

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


xpath似乎不起作用。试试这个,它可能会对您有所帮助。

您能发布Selenium RC命令吗?发送单击命令之前是否正在等待页面加载?感谢您回复Jeremy。是的,我能看到页面正确打开。其他领域的XPath似乎运行良好。它在一个它根本无法识别的特定领域。单击此特定区域中的不同元素会对页面中的另一个div进行一些更改。这可能与问题有关吗?谢谢你的回答!使用css非常有效!我错误地尝试css作为css=div[@title='Automated User']-愚蠢的我!感谢我的div不是真正的目标“它没有响应”必须让selenium按下嵌套标记:-)