我正在使用带有Chrome模式的Selenium RC for Firefox来自动化Web应用程序的测试用例。我正在使用TestNG框架和Eclipse编写Java脚本。现在到了重点:
我遇到了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代码:
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>
感谢您对此进行调查。 : - )
答案 0 :(得分:6)
我不确定拥有title属性的div是否正确。是否有可用于定位元素的其他属性?
无论如何,这是定位器的css版本,以防它起作用:
css=div[title='Automated User']
答案 1 :(得分:2)
在Firefox上运行Selenium测试时,我们曾遇到过XPath表达式问题。
我记得我们用星号(*
)替换了所有元素名称,这有帮助。即。
// * [@ id中= 'someid1'] / * [@类= 'SomeClass的'] / * [@ ID = 'someid2']
答案 2 :(得分: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
答案 3 :(得分:0)
您确定使用RC正确加载页面,即您是否看到浏览器打开并且页面加载?
答案 4 :(得分:0)
你的脚本可能比网页更快。所以试着等一段时间。
就像你可以使用waitForCondition("selenium.isElementPresent("ElementID")","20000");
看起来似乎没有xpath.try,这可能对你有帮助。