Селен, если найти на экране не удается найти элемент - PullRequest
0 голосов
/ 28 февраля 2019

Я оставлю этот вопрос простым: у меня есть утверждение if:

if self.driver.find_element_by_xpath('//*[contains(@id, "mission_countdown")]'):

И я получаю эту ошибку:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(@id, "mission_countdown")]"}

Почему я получаю это?Я имею в виду заявление if, ЕСЛИ его на экране

Спасибо за помощь

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Код ниже является примером.Он явно ожидает и перемещается к элементу объекта, который вы хотите найти.Добавление в try выдает сообщение об ошибке кроме, если не найден элемент

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#--------
# all other code to begin scraping here
#--------

try:
    if self.driver.find_element_by_xpath('//*[contains(@id, "mission_countdown")]'):
       print("found this button")

    elif: 
        print("not found trying new button ")
        self.driver.find_element_by_xpath("xpath here")

except:
    print("ERROR MESSAGE: NO ELEMENT FOUND")

Надеюсь, это поможет

0 голосов
/ 28 февраля 2019

Используйте try...catch блок. Если это не их, он поймает блок. Дайте мне знать, если это работает для вас.

try:
    if self.driver.find_element_by_xpath('//*[contains(@id, "mission_countdown")]'):
        print('found')
except:
    print('Not found')
0 голосов
/ 28 февраля 2019

find_element_by_xpath может вернуть

  • WebElement (если найден)
  • NoSuchElementException (если не найден)

Если выищите выходные данные, которые можно оценить как логические для использования в блоке if / else, попробуйте find_elements:

if self.driver.find_elements_by_xpath('//*[contains(@id, "mission_countdown")]'):
    print('At least one element was found')
else:
    print('No elements found')
...