我有一个元素,其状态(文本形式)根据与之关联的上下文菜单而变化 这是元素:
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');
答案 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);