Selenium:Python无法从elif中找到元素

时间:2019-03-03 23:24:10

标签: python selenium selenium-webdriver selenium-chromedriver

我正在使用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")

仅供参考,我正在使用chromedriver

3 个答案:

答案 0 :(得分:0)

由于其本质是elif语句,因此如果前一个if语句为true,则不会运行该语句: 例如

x = True

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

output:   'if'

答案 1 :(得分:0)

如果没有元素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")

答案 2 :(得分:0)

而不是捕获异常,请尝试如下操作:

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返回一个数组,因此它总是真实的(您拥有它的方式)