【发布时间】:2015-11-29 12:34:40
【问题描述】:
假设您有一些带有 textarea 元素的 HTML,并希望通过 Selenium(此处为 Java 绑定)获取其文本。
<textarea name="txtComment" id="txtComment" rows="2" cols="20">
Some comment inside the textarea
</textarea>
这是我通过开发人员工具(Internet Explorer 和 Firefox)查看代码的方式,因此它看起来像是一个普通的文本节点,而不是在元素的“值”属性内。
那为什么getText()不起作用:
driver.findElement(By.id("txtComment")).getText();
它只返回一个空字符串。
但是使用 getAttribute("value") 有效并导致返回预期的字符串:
driver.findElement(By.id("txtComment")).getAttribute("value");
这按预期返回“文本区域内的一些评论”
这是相当令人惊讶的,因为关于 getText() 的 Selenium 文档说如下:
获取该元素的可见(即未被CSS隐藏)的innerText, 包括子元素,没有任何前导或尾随空格。
返回: 此元素的 innerText。
正如开头的 HTML 代码所示,元素的文本部分是可见的,它是“innerText”,不是吗?
有人可以说明我错在哪里,或者如果我没有错,为什么在 Selenium 中这样实现?
【问题讨论】:
-
因为 getText 返回一个文本节点。输入和 textarea 元素文本存储在 value 属性中,因此您需要检索“value”属性的数据。
-
是的,但是当我使用某些浏览器的开发工具(即 firefox)时,我看到了我的问题中发布的代码 -> 所以它似乎是一个文本节点,不是吗?跨度>
-
这能回答你的问题吗? Selenium getText
标签: java html selenium selenium-webdriver