【问题标题】:Unable to get a Value from Text box using selenium webdriver无法使用 selenium webdriver 从文本框中获取值
【发布时间】:2016-04-29 02:32:53
【问题描述】:

我无法使用 selenium getText 方法获取文本框中存在的值。它总是返回空值。

还尝试使用 `js.executeScript("document.getElementById('WBJDCD').value"。它还返回空值。

我的 Html 如下所示。

<input id="WBJDCD" class="inforTextbox upperCaseClass" type="text" tabindex="-1" readonly="readonly" style="width: 42px; text-transform: uppercase;" hlp="JDCD" maxlength="5">

谁能帮忙

【问题讨论】:

  • 您使用的是什么驱动程序?此外,您是否验证(例如通过手动检查或自动屏幕截图)输入在您检查时实际上有文本? getText() 的 JavaDoc 说“获取此元素的可见(即不被 CSS 隐藏)innerText,包括子元素,没有任何前导或尾随空格。”所以它应该可以工作。
  • 安德鲁,输入文本包含值。但看起来该值在 html 中不可见。关于如何处理这种情况的任何想法?
  • 您肯定缺少value 属性,因此除非在运行时添加此属性,否则我看不到您期望的值来自何处。您的输入标签也没有关闭。
  • 是的,我看到输入标签尚未关闭。但我已经粘贴了html代码。
  • 安德鲁,该值存在于 DOM 中。 input#WBJDCD.inforTextbox 属性值 = "1" 属性值 = "null" 如何检索 DOM 中存在的值?知道吗?

标签: selenium-webdriver


【解决方案1】:

你只需要elem.getAttribute("value"),它将返回当前的(无论是通过 HTML 属性设置,还是通过 JavaScript 等设置的 DOM 属性)当然也可能为 null。

getText() 返回元素的 innerText(即 &lt;input ...&gt;Hello&lt;/input&gt; 这不是您想要的。

【讨论】:

  • 当我通过浏览器执行脚本时 document.getElementById('WBJDCD').value。它返回正确的值。但是当我通过 java - js.executeScript("document.getElementById('WBJDCD').value 运行它时。它返回 null {document.getElementById(...) is null}
  • 如果您正在运行 Java,为什么不直接使用 getAttribute("value") 来解决您的问题,而不是执行 JS?您的 executeScript() 返回 null 的原因是因为您的脚本中没有 return ...;,所以该方法没有任何内容可返回。
  • 非常感谢 getAttribute("value") 工作:) :) yaayyy
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
相关资源
最近更新 更多