【问题标题】:How to wait until element is updated with latest/actual text of it?如何等到元素更新为它的最新/实际文本?
【发布时间】:2015-04-28 00:31:18
【问题描述】:

在我正在自动化的应用程序中,我有一个案例,我必须获取一个文本并比较它的元素。

当驱动程序获取元素的文本 (driver.findElement(locator).getText()) 时,它会返回 - 0,但在此之后的一两秒内,它会返回该元素的实际值。可能是410 或其他。

如果我使用Thread.sleep(2000) 然后检索它不会返回0 它会返回它的实际值。

我不想使用睡眠,因此我尝试了document.readyStatejQuery.active,但没有运气。

有没有最好的方法可以等到元素的值更新为实际值?

【问题讨论】:

  • 您可以为新变量赋值并观察是否设置了新变量..?这可能有效.......
  • 这会解决它,但要等多久?我必须在那里睡觉。

标签: javascript jquery angularjs selenium selenium-webdriver


【解决方案1】:

在 C# 中,我会这样称呼。它会等到 getText 返回一个不为 0 的值,或者如果它在继续之前没有改变,则在 10 秒后抛出超时异常。如果您愿意,可以修改采取 driver.findElement(locator).getText() 而不是 element.getText。

 public void WaitForElementValue(IWebElement element, string intialValue)
    {
        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until<bool>((d) =>
            {
                if (element.getText != intialValue)
                    return true;
                else return false;
            });
    }

【讨论】:

  • 对于我目前的情况,我们知道元素的初始文本是0,但是这样的元素太多了,我不想写那么多。我想有一个通用的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
相关资源
最近更新 更多