Как получить текстовое содержимое textarea с помощью webdriver?
Я пытаюсь получить содержимое textarea в HTML-форме с помощью webdriver в Python.
Я получаю текст, но строки не хватает. The селен документы бесполезны; они говорят:
класс Селена.с WebDriver.дистанционный.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))
это печатает представление строки Юникода Python содержимого textarea, за исключением того, что все новые строки были заменены пробелами. Дох!
Не уверен, что я сталкиваюсь с проблемой кодирования текста, ошибкой selenium/webdriver (не удалось найти ее в трекере) или ошибкой пользователя.
есть ли другой способ сделать это?
редактировать: я просто дал Chrome попробовать... работать отлично. Я сообщил ошибка в трекер Селена. Обходной путь Сэма (принятый ответ ниже) работает в Firefox с одним предостережением: символы преобразуются в html-коды сущностей в возвращаемой строке. Это ерунда.
3 ответов
в качестве обходного пути вы можете попробовать использовать ExecuteScript для получения innerHtml. Я не парень python, но вот он в C#:
IWebElement element = ...
String returnText = ((IJavaScriptExecutor)webDriver).ExecuteScript("return arguments[0].innerHTML", element).ToString();
Я только что получил значение атрибута 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
января
в 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'))