IF ELSE Инструкция в python selenium webdriver не выполняет Else, когда элемент отсутствует - PullRequest
0 голосов
/ 16 октября 2019

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

Если искомого элемента нет, он падает вместо выполнения оператора else.

Я пытался использовать другую функцию с try и NoSuchElementException, но я получаю другую ошибкуabout NoSuchElementException.

Это оператор if else:

#Look for link text "Stores"
find_store = driver.find_element_by_link_text('Stores')
if find_store:
    find_store.click()
else:
    driver.get("https://example.com/myaccount")
time.sleep(5)

Это оператор try:

try:
    find_store = driver.find_element_by_link_text('Stores')
    if find_store.is_displayed():
        find_store.click() # this will click the element if it is there
        print("Store found, all good.")
except NoSuchElementException:
    driver.get("https://example.com/myaccount")
    print("Store was not found, visiting base URL to search for store")
time.slep(5)

В первом сценарии я ожидаю его поискаэлемент. Если его там нет, перейдите по URL, чтобы я мог найти там элемент. Но он никогда не открывает URL, и я получаю эту ошибку:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:

Во втором сценарии я ожидаю найти элемент. Если элемента нет, он должен посетить базовый URL и повторить попытку позже в коде. Однако здесь я получаю эту ошибку:

  except NoSuchElementException:
NameError: name 'NoSuchElementException' is not defined

Я хотел бы узнать, как избежать сбоя сценария и выполнить альтернативное действие, если элемент отсутствует. Спасибо.

1 Ответ

0 голосов
/ 16 октября 2019

Используйте следующее:

if len(driver.find_elements_by_link_text('Stores'))> 0:
    driver.find_element_by_link_text('Stores').click()
else:
    driver.get("https://example.com/myaccount")
time.sleep(5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...