Извлечь текст из изменяющегося элемента XPath на основе текста заголовка - PullRequest
0 голосов
/ 27 апреля 2019

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

Есть ли способ очистить дату от стандартного транзита:

1) на основе заголовка (стандартный транзит) 2) не переходя на вкладку "Факты отгрузки"

Я использую Python 3.7 и Chrome

Пример: https://www.fedex.com/apps/fedextrack/?tracknumbers=478239726746

Заранее благодарю за помощь.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Добро пожаловать на SO.

Вам не нужно беспокоиться об изменениях таблицы, когда вы используете приведенный ниже xpath. Xpath вернет дату, хотя вы не находитесь на вкладке «Факты отгрузки».

driver.find_element_by_xpath("//span[.='Standard transit ']/ancestor::li/span").get_attribute('textConent')

enter image description here

0 голосов
/ 27 апреля 2019

Попробуйте это:

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

driver = webdriver.Chrome(executable_path="chromedriver.exe")

wait = WebDriverWait(driver, 30)

driver.get("https://www.fedex.com/apps/fedextrack/?tracknumbers=478239726746")


wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"div.detailViewTabs_area >ul >li.factsTab > a"))).click()

wait.until(EC.visibility_of(driver.find_element(By.CSS_SELECTOR,"div.dp_facts_area")))

standardTransitDate = wait.until(EC.visibility_of(driver.find_element(By.XPATH,"//em[contains(.,'Standard transit ')]/following-sibling::span")))

print(standardTransitDate.text)

driver.quit()

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