Javascript 将selenium的waitForCondition与xpath一起使用

Javascript 将selenium的waitForCondition与xpath一起使用,javascript,selenium,Javascript,Selenium,Selenium支持通过xpath在页面中查找元素 selenium.isElementPresent//textarea 在ajax页面中,您可以使用waitForCondition在页面上等待,直到出现某些内容 selenium.waitForConditionsome\u javascript\u boolean\u test\u as\u a\u string,5000 我的困难是,我似乎无法将xpath支持用于布尔测试。document.getElementById似乎工作正常,但se

Selenium支持通过xpath在页面中查找元素

selenium.isElementPresent//textarea

在ajax页面中,您可以使用waitForCondition在页面上等待,直到出现某些内容

selenium.waitForConditionsome\u javascript\u boolean\u test\u as\u a\u string,5000

我的困难是,我似乎无法将xpath支持用于布尔测试。document.getElementById似乎工作正常,但selenium.isElementPresent不工作


是否有任何简单的方法可以从waitForCondition的第一个参数中访问selenium的xpath元素查找功能?

如果要按id选择元素,最简单的方法是使用纯selenese:

 isElementPresent("textarea")
如果坚持使用xpath,则可能必须使用

isElementPresent("//*[@id='textarea']")

id功能可能不兼容跨浏览器


如果这没有帮助,您的html文档也可能存在导致这种情况发生的结构问题。运行html验证程序,检查页面上的嵌套问题和类似问题。

您可以执行以下操作:

selenium.waitForCondition(
    "var x = selenium.browserbot.findElementOrNull('elementIdOrXPathExpression');"
  + "x != null && x.style.display == 'none';", "5000");
waitForCondition只是将最后一个js表达式结果作为布尔值进行计算,从而允许您编写复杂的测试,如下所示。例如,我们还使用此技术测试jQueryAjax是否已完成执行


唯一的缺点是您现在还依赖于browserbot和较低级别的core js API。

更简单的方法是:

selenium.waitForCondition("selenium.isElementPresent(\"xpath=//*[@id='element_id_here']/ul\");", time_out_here);

你是如何运行这个脚本的?您是从Selenium IDE执行此操作,还是从Java将其导出到另一种语言C、Java等?我认为这并不重要,因为所有这些都归结为同一个JavaScriptAny来等待元素中的文本?
selenium.waitForCondition("selenium.isElementPresent(\"xpath=//*[@id='element_id_here']/ul\");", time_out_here);