Как получить текстовое содержимое текстовой области с помощью webdriver? - PullRequest
7 голосов
/ 29 ноября 2011

Я пытаюсь получить содержимое textarea в форме HTML, используя webdriver в Python .

Я получаю текст, но новые строки отсутствуют. документы по селену в значительной степени бесполезны; они говорят:

класс 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))

Это печатает представление строки Unicode Python содержимого текстовой области, за исключением того, что все новые строки были заменены пробелами. Doh!

Не уверен, что у меня проблема с кодировкой текста, ошибка селена / веб-драйвера (не удалось найти ее в трекере) или ошибка пользователя.

Есть ли другой способ сделать это?

EDIT : Я только что попробовал Chrome ... работает отлично. Я сообщил о ошибке в систему отслеживания проблем Селена. Обходное решение Сэма (принятый ответ ниже) работает в Firefox с одной оговоркой: символы возвращаются в коды сущностей HTML в возвращаемой строке. Это ничего страшного .

Ответы [ 3 ]

7 голосов
/ 22 ноября 2012

Я только что получил значение атрибута тега 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

Ян

4 голосов
/ 29 ноября 2011

В качестве обходного пути вы можете попробовать использовать ExecuteScript, чтобы получить innerHtml. Я не парень с питоном, но вот он в C #:

IWebElement element = ...
String returnText = ((IJavaScriptExecutor)webDriver).ExecuteScript("return arguments[0].innerHTML", element).ToString();
0 голосов
/ 22 января 2017

В 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'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...