Selenium/python 2.7如何将if/else与find_元素一起使用?

Selenium/python 2.7如何将if/else与find_元素一起使用?,python,selenium,if-statement,element,Python,Selenium,If Statement,Element,我想说的是,如果显示了element1,请单击,如果没有,请检查element2是否显示,单击,等等。但是当元素不存在时,我的代码停止。如果element1在那里,它会单击它,如果它不在那里,代码会停止,但我希望它继续遍历每个elif,直到找到一个,任何帮助都会被感谢 from selenium import webdriver fp = webdriver.FirefoxProfile('') driver = webdriver.Firefox(firefox_profile=fp) dr

我想说的是,如果显示了element1,请单击,如果没有,请检查element2是否显示,单击,等等。但是当元素不存在时,我的代码停止。如果element1在那里,它会单击它,如果它不在那里,代码会停止,但我希望它继续遍历每个elif,直到找到一个,任何帮助都会被感谢

from selenium import webdriver

fp = webdriver.FirefoxProfile('')
driver = webdriver.Firefox(firefox_profile=fp)
driver.set_window_size(1400, 1000)
driver.get('')

elem1 = driver.find_element_by_xpath("//img[@title='img1']")

elem = driver.find_element_by_xpath("//img[@title='img2']")

if elem.is_displayed():
    elem.click()
    print "true"
elif elem1.is_displayed():
    elem1.click()
    print "1true"
else:
    print "false"
错误是

selenium,common.exceptions.NoSuchElementException:消息:无法定位元素:{“方法”:“xpath”,“选择器”:”//img[@title='img1']“}


该错误意味着根本找不到元素。换句话说,它不显示,也不存在

我将创建一个元素/定位器列表(假设您想缩放它),在列表上循环并处理
NoSuchElementException
error。单击元素后退出循环:

from selenium.webdriver.common.by import By

locators = [
    (By.XPATH, "//img[@title='img1']"),
    (By.XPATH, "//img[@title='img2']")
]

for by, value in locators:
    try:
        driver.find_element(by, value).click()
        break  # exit once we click an element
    except NoSuchElementException:
        pass  # element is not present - okay, move on

该错误意味着根本找不到元素。换句话说,它不显示,也不存在

我将创建一个元素/定位器列表(假设您想缩放它),在列表上循环并处理
NoSuchElementException
error。单击元素后退出循环:

from selenium.webdriver.common.by import By

locators = [
    (By.XPATH, "//img[@title='img1']"),
    (By.XPATH, "//img[@title='img2']")
]

for by, value in locators:
    try:
        driver.find_element(by, value).click()
        break  # exit once we click an element
    except NoSuchElementException:
        pass  # element is not present - okay, move on

你所说的“代码停止”是什么意思?你是否有任何错误?另外,两个xpath表达式是相同的,这是故意的吗?谢谢。与答案无关。。。但我建议你把变量命名得更清楚一些。我会将
elem1
重命名为
image1
,将
elem
重命名为
image2
或更清晰的名称。这将使您和其他人更易于阅读和理解您的代码。您所说的“代码停止”是什么意思?您是否遇到任何错误?另外,两个xpath表达式是相同的,这是故意的吗?谢谢。与答案无关。。。但我建议你把变量命名得更清楚一些。我会将
elem1
重命名为
image1
,将
elem
重命名为
image2
或更清晰的名称。它将使您和其他人更易于阅读和理解您的代码。