Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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


(iczaur) #1

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

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


(Александр Таранков) #2

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


(iczaur) #3
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?


(Mykhailo Poliarush) #4
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 тут http://lessons2.ru/lesson/preview/upravlyayushie-konstrukcii-python/ и об написании webdriver тестов тут http://lessons2.ru/lesson/preview/osnovy-avtomatizacii-testirovaniya-veb-prilozhenij-s-selenium-webdriver-na-python/

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