не могу получить данные из таблицы разбиения одной ячейки по xpath с webdriver - PullRequest
0 голосов
/ 25 августа 2018

не может получить данные из таблицы разбиения одной ячейки, спасибо!

Код Python

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("url")
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span').text
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/i').text
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[2]').text

Ожидаемый результат

5    1-1/2    14.34

Сообщения об ошибках:

Unable to locate element: //html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span

но на самом деле эти данные существуют в таблице

1 Ответ

0 голосов
/ 25 августа 2018

Ваш код правильный, но ваш код проверяет наличие элемента до полной загрузки страницы.Самое простое, что вы можете сделать, это добавить условие wait.

В приведенном ниже коде драйвер опрашивает HTML в течение 20 секунд, чтобы загрузить элемент.Он не ожидает целых 20 секунд перед проверкой существования элемента, но ожидает загрузки элемента в течение 20 секунд, после чего он выдаст NoSuchElementException

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(20) # seconds

driver.get("url")
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span').text)
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/i').text)
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[2]').text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...