Tôi đang cố gắng lấy nội dung của một số textarea ở dạng HTML sử dụng webdriver in Python.Làm cách nào để có được nội dung văn bản của một vùng văn bản với trình quản lý web?
Tôi nhận được văn bản nhưng thiếu dòng mới. Các selenium docs là khá nhiều vô ích; họ nói:
lớp selenium.webdriver.remote.webelement.WebElement (cha mẹ, id_)
[...]
văn bản: Lấu văn bản của nguyên tố này.
Tôi hiện đang làm như sau:
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))
này in các đại diện của một chuỗi Python unicode các nội dung của textarea, trừ tất cả các dòng mới đã được thay thế bằng dấu cách. Doh!
Không chắc chắn nếu tôi đang gặp phải sự cố mã hóa văn bản, lỗi selenium/webdriver (không thể tìm thấy lỗi trong trình theo dõi) hoặc lỗi người dùng.
Có cách nào khác để thực hiện việc này không?
EDIT: Tôi vừa thử Chrome ... hoạt động tốt. Tôi đã báo cáo số bug cho trình theo dõi vấn đề của selen. Cách giải quyết của Sam (câu trả lời được chấp nhận bên dưới) hoạt động trong Firefox với một báo trước: các ký hiệu được chuyển đổi thành mã thực thể HTML trong chuỗi trả về. Đây là no big deal.
Đề xuất tuyệt vời. Điều này hoạt động gần như hoàn hảo. Vấn đề duy nhất là các ký hiệu được dịch sang các mã thực thể HTML của chúng trong chuỗi kết quả. tức là '<' trở thành '< ', v.v. Tôi sử dụng một vài phép thuật Python cấp thấp và giảm nhẹ vấn đề đó. –
Để tham khảo, mã Python tương đương là 'text = my_web_driver.execute_script (" đối số trả về [0] .innerHTML ", textarea_element)'. –
Trong Python, 'xml.sax.saxutils.unescape (văn bản)' un-escapes các '&', '<' and '>' thực thể. –