Selenium - 为什么getText()不适用于<textarea>元素但是getAttribute(&#34; value&#34;)是?

时间:2015-09-03 15:19:15

标签: java html selenium selenium-webdriver

&lt; p&gt;鉴于您有一些带有textarea元素的HTML并希望通过Selenium获取其文本(此处为Java绑定)。&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt; textarea name =&#34; txtComment&#34; ID =&#34; txtComment&#34;行=&#34; 2&#34; COLS =&#34; 20&#34;&GT;     textarea内部的一些评论 &LT; / textarea的&GT; &LT; /代码&GT;&LT; /预&GT; &LT p为H.;&LT峰; br&GT; 这就是我通过开发人员工具(即firefox)看到代码的方式,所以看起来它是一个普通的文本节点,而不是在&#34;值&#34;元素的属性。 &LT峰; br&GT;&LT峰; br&GT; 那么为什么&lt; strong&gt; getText()不起作用&lt; / strong&gt;:&lt; / p&gt; &LT;预&GT;&LT;代码&GT; driver.findElement(By.id(&#34; txtComment&#34))。gettext的(); &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;只有&lt; em&gt;返回一个空字符串&lt; / em&gt;。&lt; / p&gt; &lt; p&gt;但是使用&lt; strong&gt; getAttribute(&#34;值&#34;)有效&lt; / strong&gt;并返回预期的字符串:&lt; / p&gt; &LT;预&GT;&LT;代码&GT; driver.findElement(By.id(&#34; txtComment&#34))的getAttribute。(&#34;值&#34); &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;这个&lt; em&gt;返回&#34;在textarea内的一些评论&#34;正如所料&lt; / em&gt; &LT峰; br&GT;&LT峰; br&GT;&LT峰; br&GT; 这是相当令人惊讶的,因为关于&lt; a href =&#34; https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html#getText%的Selenium文档28%29&#34;的rel =&#34; nofollow的&#34;&GT;的getText()&LT; / A&GT;说以下内容:&lt; / p&gt; &LT; BLOCKQUOTE&GT;   &lt; p&gt;获取此元素的可见(即未被CSS隐藏)innerText,   包括子元素,没有任何前导或尾随空格。&lt; / p&gt;      &LT p为H.;返回:       此元素的innerText。&lt; / p&gt; &LT; / BLOCKQUOTE&GT; &lt; p&gt;正如开头的HTML代码所示,元素的文本部分是可见的,它是&#34; innerText&#34;不是吗?&lt; / p&gt; &lt; h3&gt;有人可以说明我错在哪里,或者我不知道,为什么在Selenium中这样实现?&lt; / h3&gt;

2 个答案:

答案 0 :(得分:3)

在Python中,它给出了相同的结果:

driver.find_element_by_id("txtComment").text
driver.find_element_by_id("txtComment").get_attribute("value")

textarea内的一些评论

答案 1 :(得分:1)

使用 Webdriverio (WDIO) 尝试过同样的事情。

getText() 不适用于 Textarea。返回空字符串。

改用 getValue() 对我有用。返回了确切的字符串。

<textarea id="txtAreaDescription" maxlength="2500" class="css-pqtyuc">Auto_Internal_Note_Description</textarea>