一尘不染

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

selenium

我正在尝试使用Python中的webdriver以
HTML形式获取文本区域的内容。

我正在获取文本,但是缺少换行符。该selenium文档是几乎无用的;
他们说:

selenium.webdriver.remote.webelement.WebElement类(父代,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))

这会打印文本区域内容的Python unicode字符串的表示形式,除非所有换行符都已替换为空格。h!

不知道我是否遇到文本编码问题,selenium / webdriver bug(在跟踪器中找不到)或用户错误。

有其他方法可以做到吗?

编辑 :我只是尝试了Chrome
…工作正常。我向selenium的问题跟踪器报告了一个错误。Sam的解决方法(以下是可接受的答案)在Firefox中起作用,但有一个警告:将符号在返回的字符串中转换为HTML实体代码。


阅读 572

收藏
2020-06-26

共1个答案

一尘不染

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

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