Selenium: Python не может найти элемент от elif - PullRequest
0 голосов
/ 04 марта 2019

Я использую условие if-elif.Элементы могут быть найдены, когда они находятся в первом состоянии, но Selenium просто зависает и не может найти элемент, когда он находится на elif.Любая идея?

Вот код, который я использую:

if (driver.find_elements_by_xpath(("//*[contains(text, 'Hello Automation User')]"))):
    print ("Test Passed")
elif (driver.find_elements_by_class_name('error')):
    print ("Test Failed: Username and Password combination mismatch")
else:
    print("Test failed")

FYI Я использую chromedriver

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Если элемент отсутствует webdriver выдаст exception, так что для этого следует использовать блок Try..Except. Надеюсь, эта помощь

try:
  if (driver.find_element_by_xpath(("//*[contains(text, 'Hello Automation User')]"))):
    print ("Test Passed")
except:
  if (driver.find_element_by_class_name('error')):
    print ("Test Failed: Username and Password combination mismatch")
else:
    print("Test Failed")
0 голосов
/ 04 марта 2019

Вместо того, чтобы ловить исключения, попробуйте это так:

if len(driver.find_elements_by_xpath(("//*[contains(text, 'Hello Automation User')]"))) > 0:
  # pass
elif len(driver.find_elements_by_class_name('error')) > 0:
  # fail
else:
  # fail

Обратите внимание, что driver.find_elements_by_xpath возвращает массив, поэтому он всегда правдив (как он был у вас)

0 голосов
/ 04 марта 2019

, поскольку он является элифным статусом по своей природе, он не будет запускать этот статус, если предыдущий, если этот статус истинен: например,

x = True

if x:
 print('if')
elif x:
 print('elif')

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