我正在尝试使用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。
答案 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'))