【问题标题】:Value attribute of a text box retains old value even after new value has been keyed in即使在键入新值后,文本框的值属性仍保留旧值
【发布时间】:2015-06-16 13:24:14
【问题描述】:

这是我在表单上的文本框的 HTML:

<input type="text" onblur="javascript:itemLostFocus('18A3461989AC0244E050A20AB17C4671');" onkeydown="javascript:itemChanging('18A3461989AC0244E050A20AB17C4671');" value="972" name="18A3461989AC0244E050A20AB17C4671" maxlength="3" size="3"/>

接下来我将文本框输入从 972 更新为 123。现在如果我使用 Selenium WebDriver 的 getAttribute("value") 方法检查同一文本框的 value 属性,它仍然显示 972 而不是 123。

我应该寻找什么属性来检索值 123?

【问题讨论】:

  • 如何输入值?通过Javascript?如果可能请显示代码
  • 文本框可能是只读的吗?

标签: java selenium selenium-webdriver webdriver


【解决方案1】:

由于 Selenium WebDriver 执行速度如此之快,当您更新输入值时,您的 getAttribute("value") 方法会在您的输入有机会更新之前执行。

在您的 BasePage 中,您需要一个 waitFor boolean

protected void waitFor(BooleanCondition condition) {
    waitFor(condition, "(none)");
}

在您的对象页面中,您需要在更新输入之后和调用 getAttribute("value") 之前调用 waitFor 方法

public ObjectPage readValue(String value) {
    // whatever update happens
    waitFor(Conditions.elementIsNotDisplayed("#waiting_dialog"));
    return this;
}

【讨论】:

  • 没问题。很高兴有帮助! :)
猜你喜欢
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多