Реализация условий в тестах Python + WebDriver

Сори за спам , если такая тема уже обсуждалась.
Подскажите пожалуйста как реализовать на WebDriver + Python условия проверки элемента. т.е:

Если кнопка на странице есть - нажать.
Если нет, тест продолжает идти дальше (нажимает на другую кнопку, заполняет поля и тд)

Если кнопка не найдена, WebDriver выкинет Exception. Его можно перехватить и идти дальше. Если Exception-а нет, нажать кнопку

1 лайк
def test_logon(self):
    driver = self.driver
    elem = driver.find_element_by_xpath("//div[2]/a[@class='gb_g']")
    elem.click()
    driver.set_page_load_timeout(30)
    elem = driver.find_element_by_xpath("//*[@id='gmail-sign-in']"):
        elem.click()
    driver.set_page_load_timeout(30)
    driver.find_element_by_xpath("//*[@id='Email']").send_keys('iczaur@gmail.com')
    driver.find_element_by_xpath("//*[@id='Passwd']").send_keys("GhjcnbvtyZ2311")
    elem = driver.find_element_by_xpath("//*[@id='signIn']")
    elem.click()

Тестовый пример.
Не всегда появляется кнопка driver.find_element_by_xpath("//*[@id=‘gmail-sign-in’]"). Подскажите пожалуйста как выловить Exсeption?

try:
   You do your operations here
except Exception:
   You do your operations here

А касательно вашего вопроса, http://selenium.googlecode.com/git/docs/api/py/common/selenium.common.exceptions.html?highlight=exception#selenium.common.exceptions.NoSuchElementException

Пример может выглядеть вот так вот:

def is_element_present(self, how, what):
    try: self.driver.find_element(by=how, value=what)
    except NoSuchElementException, e: return False
    return True

Если есть желание, время и деньги, можете посмотреть детальное описание и видео мастер-класс об обработке ошибок в python тут Поиск 🔍 организации или лица - Предоставление сведений из ЕГРЮЛ/ЕГРИП в электронном виде и об написании webdriver тестов тут Поиск 🔍 организации или лица - Предоставление сведений из ЕГРЮЛ/ЕГРИП в электронном виде

try: 
     driver.find_element_by_xpath("//*[@id='gmail-sign-in']")
except NoSuchElementException, e: 
    pass
1 лайк