繁体   English   中英

如何使用webdriver获取textarea的文本内容?

[英]How do I get the text contents of a textarea with webdriver?

我正在尝试使用Python中的webdriver在 HTML表单中获取textarea的内容。

我收到了文字,但缺少换行符。 硒文档几乎没用; 他们说:

class selenium.webdriver.remote.webelement.WebElement(parent,id_)

[...]

text:获取元素的文本。

我目前正在做以下事情:

from selenium import webdriver

# open the browser and web site
b = webdriver.Firefox()
b.get('http://www.example.com')

# get the textarea element
textbox = b.find_element_by_name('textbox')

# print the contents of the textarea
print(repr(textbox.text))

这将打印textarea内容的Python unicode字符串的表示形式,除了所有换行符已被空格替换。 卫生署!

不确定我是否面临文本编码问题,selenium / webdriver错误(无法在跟踪器中找到它)或用户错误。

有没有不同的方法来做到这一点?

编辑 :我只是尝试了Chrome ...工作正常。 我向selenium的问题跟踪器报告了一个错误 Sam的解决方法(下面接受的答案)适用于Firefox,但有一点需要注意:符号在返回的字符串中转换为HTML实体代码。 没什么大不了的

我刚刚获得了标签textarea的属性值。 下面是Java代码示例。

WebElement textarea = driver.findElement(By.id("xf-1242"));         
String text = textarea.getAttribute("value");
log.debut(text);

我正在使用Chrome驱动程序,上面的代码在日志中添加了一行文本(在我的情况下为XML)。 我从http://www.w3schools.com/jsref/dom_obj_textarea.asp得到了这个想法

一月

作为一种解决方法,您可以尝试使用ExecuteScript来获取innerHtml。 我不是一个python的人,但它在C#:

IWebElement element = ...
String returnText = ((IJavaScriptExecutor)webDriver).ExecuteScript("return arguments[0].innerHTML", element).ToString();

在Python中首先获取元素,并在获取属性值之后,在python中使用get_attribute('value')。

from selenium import webdriver

driver = webdriver.Firefox()
URL = "http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea"
driver.get(URL)
driver.switch_to.frame("iframeResult")
# get the textarea element by tag name
textarea = driver.find_element_by_tag_name('textarea')

# print the attribute of the textarea
print(textarea.get_attribute('value'))
print(textarea.get_attribute('rows'))
print(textarea.get_attribute('cols'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM