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

时间:2011-11-28 22:11:20

标签: python selenium webdriver

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

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

  

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的问题跟踪器报告bug。 Sam的解决方法(下面接受的答案)适用于Firefox,但有一点需要注意:符号在返回的字符串中转换为HTML实体代码。这是no big deal

3 个答案:

答案 0 :(得分:7)

我刚刚获得了标签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

得到了这个想法

答案 1 :(得分:4)

作为一种解决方法,您可以尝试使用ExecuteScript来获取innerHtml。我不是一个蟒蛇人,但这里是C#:

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

答案 2 :(得分:0)

在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'))