当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?
Posted
技术标签:
【中文标题】当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?【英文标题】:Where is the text in a <textarea> when it is not between the beginning and ending tags? 【发布时间】:2021-04-20 13:33:06 【问题描述】:我有一种情况,我在<textarea>
中输入了Hello.
,我可以看到文本区域中的文本,但它没有出现在<textarea>
和</textarea>
之间。
这是一个极其简单的情况,但是我为它做了一个JSFiddle:https://jsfiddle.net/rhedin/bhwc394e/2/ 如果你在textarea 中输入Hello.
,然后在调试器中检查元素,你会在textarea 中看到Hello.
,但元素会以这种方式显示:<textarea></textarea>
我关心的原因是我正在使用 Selenium。我向 webdriver 进程发送一条消息,webdriver 进程向以 marionette 模式运行的 Firefox 实例发送一条消息。当我询问 webdriver textarea 的内容是什么时,它返回 textarea 的 innerText。那是一个空字符串。我可以在屏幕上明显看到的文字在其他地方。
有人知道怎么回事吗?
【问题讨论】:
使用值属性。看吧,请 - ***.com/questions/14939010/get-value-from-text-area ...或***.com/questions/48493301/get-text-from-the-textarea DevTools 中的检查选项卡不显示 textarea 元素的内容。此外,textarea
只能包含纯文本,它没有 html,请改为阅读 textarea 的 value
属性/属性。
【参考方案1】:
好吧,我放弃了。我发现了以下几点,但我并不满意。
是的,DevTools 中的检查选项卡确实显示了 textarea 元素的内容。
我已经更改了我的 JSFiddle (https://jsfiddle.net/rhedin/bhwc394e/11/),以便同时使用输入和文本区域。两者都被赋予了一个值——elt.value = 'Added as a value'
——和一个内部文本——elt.innerText = 'Added as an inner text'
。如果您检查控制台中的元素,您将看到 value
和 innerHTML
属性都已定义。 (好像浏览器把innerText的值放在innerHTML属性里面。innerHTML是innerText的超集。)
当elt.value
和elt.innerHTML
都被定义时,value
优先。向用户显示value
中的数据。
所以我学到了足够多的知识,可以解决涉及 Selenium 的问题。对于那些可能受益的人,这是我的 Selenium 解决方案中的关键线。 textareaElement.get_attribute('value')
【讨论】:
以上是关于当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?的主要内容,如果未能解决你的问题,请参考以下文章