Selenium非常支持通过xpath
在页面中查找元素 selenium.isElementPresent("//textarea")
在ajax页面中,您可以使用waitForCondition在页面上等待,直到出现某些内容
selenium.waitForCondition("some_javascript_boolean_test_as_a_string", "5000")
我的困难是,我似乎无法使用xpath支持进行布尔测试。 document.getElementById似乎工作正常,但selenium.isElementPresent没有。
有没有简单的方法可以从waitForCondition的第一个参数中访问selenium的xpath元素查找功能?
答案 0 :(得分:8)
更直接的方法是:
selenium.waitForCondition("selenium.isElementPresent(\"xpath=//*[@id='element_id_here']/ul\");", time_out_here);
答案 1 :(得分:5)
你可以这样做:
selenium.waitForCondition(
"var x = selenium.browserbot.findElementOrNull('elementIdOrXPathExpression');"
+ "x != null && x.style.display == 'none';", "5000");
waitForCondition只是将最后一个js表达式结果作为布尔值进行计算,从而允许您编写复杂的测试(如此处所示)。例如,我们也使用这种技术来测试jQuery AJAX是否已经完成执行。
唯一的缺点是你现在也依赖于browserbot和更低级别的核心js API。
答案 2 :(得分:3)
如果你想按id选择一个元素,最简单的方法是使用直的selenese:
isElementPresent("textarea")
如果您坚持使用xpath,则可能必须使用
isElementPresent("//*[@id='textarea']")
或
isElementPresent("//id('textarea')")
(id功能可能不兼容跨浏览器)
如果这对您的HTML文档没有帮助,也可能会出现导致此问题发生的结构性问题。运行像html validator这样的html验证程序来检查页面上的嵌套问题和类似问题。