Python Селен - не может получить элементы по xpath - PullRequest
0 голосов
/ 26 января 2020
    <table class="wikitable" style="float: right;">
    <caption>Current UTC
    </caption>
    <tbody><tr>
    <td>**January 26, 2020 01:13:27 (UTC) –** <span class="plainlinks" id="purgelink"><span class="nowrap"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Coordinated_Universal_Time&amp;action=purge">Refresh</a></span></span>

</td></tr></tbody></table>

Мне просто нужно получить дату. Я попытался:

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td/text()')

ОШИБКА:

неверный селектор: Результат выражения xpath: [текст объекта]. Это должен быть элемент.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 26 января 2020

Вот фиксированная версия xpath, которую вы пытаетесь получить.

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td')
print(utc.text)

Но выше будет приведен текст ссылки "Refre sh". Чтобы получить только дату, которую вы можете попробовать:

utc = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/table[1]/tbody/tr/td')
utc_trim = utc.get_attribute('innerHTML').split('<')[0]
print(utc_trim)

Чтобы помочь с проблемами синхронизации загрузки страниц, вы можете сделать что-то вроде следующего:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

utc = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="mw-content-text"]/div/table/tbody/tr/td')))
utc_trim = utc.get_attribute('innerHTML').split('<')[0]
print(utc_trim)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...