Selenium:如何等待元素的文本更改

时间:2011-09-15 22:14:48

标签: javascript selenium

我有一个元素,其状态(文本形式)根据与之关联的上下文菜单而变化 这是元素:

td id="A" name="status"> StatusStart  </td>     

一旦采取某些行动,这可能会成为

 td id="A" name="status"> StatusDone  </td>      

我想等待文本更改发生,使用waitForCondition 到目前为止,我已经尝试过:

selenium.waitForCondition("selenium.isElementPresent(\"//td[@name='status' and text()='StatusDone']\");", "10000");    

但这不起作用,因为文本不是td元素的一部分 在JavaScript中,我看到类似的内容:

function myfunc() {        
window.getGlobal().addSelectGroup('status'); window.getGlobal().addSelectItem('status','StatusStart'); 

4 个答案:

答案 0 :(得分:4)

请尝试按如下方式更改xpath。

//td[@name='status' and .//text()='StatusDone']

//td[@name='status' and contains(.//text(),'StatusDone')]

答案 1 :(得分:1)

你说“这不起作用,因为文本不是td元素的一部分”。这很奇怪,因为您显示的HTML表示文本是TD元素的一部分。你尝试的waitForCondition()正是这样做的。我最好的猜测是TD文本不是完全“StatusDone”,而是“StatusDone”(基于您的HTML)。如果是这样,比较将永远不会匹配。有明显的方法可以解决这个问题 - 将空格添加到常量中,或者使用contains(text(), 'StatusDone')代替比较。

答案 2 :(得分:0)

您可以在一次行动(java)循环中实施重复storeText(css=td[name=status],var_name)break var_name="StatusDone"

答案 3 :(得分:0)

隐含等待?

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);