我有以下HTML:
<tbody>
<tr>
<td>
<span>
<span> I Will Change </span>
</span>
我试图找出跨度内的文本何时更改并将新文本存储在变量中。这就是我试过的:
waitForClick = wait.until {
newText = ExpectedConditions.invisibilityOfElementWithText(xpath, //path for the span with the text
}
这会产生语法错误,我不知道如何使用invisibilityOfelementswithText。我怎么能在Ruby中使用它,注意文本更改的最佳方法是什么?我不知道文本会改变什么,所以我不能等待。
答案 0 :(得分:0)
我不是ruby开发者,但我认为这个想法需要像:
while(driver.PageSource.Equals("I Will Change"))
{
sleep(1000)
}
答案 1 :(得分:0)
我认为没有办法使用ExpectedConditions
执行此操作。与文本相关的方法都与查找文本无关,而不是等待文本更改。在Java中有FluentWait
但我找不到任何对Ruby的引用。 FluentWait
允许您编写自定义等待,以便您可以等待当前文本的当前元素返回false,这将指示文本更改。除此之外,你必须自己实现它。我不知道Ruby,但伪代码就像
timeout = 20 // seconds
while (element.text == "I Will Change" and timeElapsed < timeout)
{
sleep(100)
}
如果您自己实施,请确保将超时添加到上面的代码中。您不希望稍微关闭预期的文本,并且脚本会卡住并且永远不会完成。
对于InvisibilityOfElementWithText()
方法,它正在寻找一个不可见或被删除的元素。我不认为这就是你想要的,因为你期望元素能够持久存在,但其中包含的文本会发生变化。