Вставить весь текст со страницы веб-драйвера Selenium - PullRequest
0 голосов
/ 20 февраля 2020

Я использую Python3 с драйвером Selenium.

from selenium.webdriver.chrome.options import Options
import sys

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=options)
try:
    driver.get("https://maclab.gameful.me/signin")
    driver.find_element_by_class_name("nsl-button-google").click()
    email = driver.find_element_by_id("identifierId")
    email.send_keys("338907@guhsd.net")
    driver.find_element_by_id("identifierNext").click()
    password = driver.find_element_by_name("password")
    password.send_keys("NotActualPassword")
    driver.find_element_by_id("passwordNext").click()
except:
    print("Something went wrong!", sys.exc_info())
finally:
    driver.close()
    sys.exit()

Мой вопрос заключается в том, как сделать распечатку всей веб-страницы, которую Selenium видит в виде текста в виде оператора print () для ради отладки?

1 Ответ

1 голос
/ 20 февраля 2020

Селен метод driver.page_source. Просто напечатайте это.

Если вы хотите найти весь текст на странице, вам нужно получить список всех элементов на странице, а затем вызвать для них метод .text. Я думаю, что вы могли бы сделать это с помощью запроса XPath. Вот однострочник.

all_text = [element.text for element in driver.find_elements_by_xpath("*") if element.text]

Объяснение:

all_text будет список строк.

driver.find_elements_by_xpath() возвращает список всех элементов, соответствующих Запрос XPath.

* - это подстановочный знак в XPath. Вы также можете сделать //*, где // означает «все совпадающие узлы в текущем узле», поскольку ваш текущий узел - это узел root.

Некоторые найденные элементы не будут содержать никаких текст, (в этом случае element.text вернет None), поэтому вы хотите отфильтровать их (if element.text в понимании списка)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...