Что мне делать, когда нет идентификатора, имени и т.д. и driver.find_elements_by_xpath не будет работать?

#python #selenium #xpath

#python #selenium #xpath

Вопрос:

Я пытаюсь установить время «следующего восхода луны» в 12: 05 утра (в верхней части этой страницы). У него нет имени, идентификатора, и когда я запускаю следующий xpath, он не работает:

 nextMoonRise = driver.find_element_by_xpath('/html/body/div[1]/div[6]/main/article/section[1]/div/div[3]/p[7]/text()')
  

Ошибка, которую я получаю, это:

  "selenium.common.exceptions.InvalidSelectorException: Messa&e: invalid selector: The result of the xpath expression "/html/body/div[1]/div[6]/main/article/section[1]/div/div[3]/p[7]/text()" is: [object Text]. It should be an element."
  

Примечание: Xpath работает нормально, я использовал его в других случаях. Именно эта конкретная часть данных вызывает у меня проблемы.

Комментарии:

1. можете ли вы пометить свой элемент на странице и обновить скриншотом, который я не смог найти moonrise

Ответ №1:

/text() недопустим .text атрибут для получения текста из элемента

 nextMoonRise = driver.find_element_by_xpath('/html/body/div[1]/div[6]/main/article/section[1]/div/div[3]/p[7]')
print(nextMoonRise.text)
&&t;&&t;&&t; Next Moonrise: Tomorrow00:05
  

Комментарии:

1. Это действительно сработало. Решением было использовать xpath, прикрепленный ко всему <p&&t;, а не к конкретным данным, которые я искал. Спасибо!

Ответ №2:

Мы можем получить доступ к веб-элементам, у которых нет таких атрибутов, как name, ID, Class…

В настоящее время вы используете абсолютный xpath, следование Xpath поможет получить только время следующего восхода луны. Ниже приведен относительный путь. попробуйте использовать следующий вид xpath express. это будет иметь много преимуществ.

 .//p[contains(.,'Next Moonrise: ')]/text()
  

Пожалуйста, дайте мне знать, если вы знаете об этом больше.