Java 为什么Selenium中的getText()不适用于<;textarea>;元素,但getAttribute(“value”)是?
假设您有一些带有textarea元素的HTML,并且希望通过Selenium(这里是Java绑定)获取其文本 它只返回一个空字符串 但是使用getAttribute(“value”)可以运行并返回预期的字符串:Java 为什么Selenium中的getText()不适用于<;textarea>;元素,但getAttribute(“value”)是?,java,html,selenium,selenium-webdriver,Java,Html,Selenium,Selenium Webdriver,假设您有一些带有textarea元素的HTML,并且希望通过Selenium(这里是Java绑定)获取其文本 它只返回一个空字符串 但是使用getAttribute(“value”)可以运行并返回预期的字符串: driver.findElement(By.id("txtComment")).getAttribute("value"); 这将按预期返回“文本区域内的一些注释” 这是相当令人惊讶的,因为Selenium文档中有以下内容: 获取此元素的可见(即
driver.findElement(By.id("txtComment")).getAttribute("value");
这将按预期返回“文本区域内的一些注释”
这是相当令人惊讶的,因为Selenium文档中有以下内容:
获取此元素的可见(即未被CSS隐藏)innerText,
包括子元素,没有任何前导或尾随空格
返回:
此元素的内部文本
正如开头的HTML代码所示,元素的文本部分是可见的,它是“innerText”,不是吗
有人能说明我错在哪里吗?如果我没有错,为什么在Selenium中实现这样的功能?在Python中,它给出了相同的结果:
driver.find_element_by_id("txtComment").text
driver.find_element_by_id("txtComment").get_attribute("value")
文本区内的一些评论。与WebDrivero(WDIO)尝试了相同的方法
getText()未在Textarea上工作。返回空字符串
改为使用getValue(),对我有效。返回了精确的字符串
Auto\u Internal\u Note\u Description
,因为getText返回一个文本节点。Input和textarea元素文本存储在value属性中,因此您需要检索“value”属性的数据。是的,但当我使用某些浏览器(如firefox)的开发工具时,我看到的代码如我的问题->中所示,因此它似乎是一个textnode,不是吗?这是否回答了您的问题?但是表单input
元素(对于实际的用户输入)的情况并非如此。text真的获得了textarea
的内部文本吗?我希望.text
总是返回一个空字符串。你用什么测试它(包括版本)?
driver.findElement(By.id("txtComment")).getAttribute("value");
driver.find_element_by_id("txtComment").text
driver.find_element_by_id("txtComment").get_attribute("value")