class TestCatalog: ''' Проверка, что при отображении карточек на странице списком или в гриде, колличество элементов на странице равно ''' def test_count_elements(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() list_view = wd.find_element_by_id('list-view') list_view.click() count_elements = wd.find_elements_by_class_name('product-layout') print(len(count_elements)) grid_view = wd.find_element_by_id('grid-view') grid_view.click() count_elements1 = wd.find_elements_by_class_name('product-layout') print(len(count_elements1)) self.close() assert count_elements == count_elements1 ''' Проверка, что при отображении карточек на странице списком или в гриде, колличество элементов на странице равно ''' def test_sorted(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() input_sort = Select(wd.find_element_by_id('input-sort')) input_sort.select_by_index(2) card = wd.find_elements_by_css_selector('.caption h4 > a') first_letter = card[0].get_attribute('innerHTML') self.close() assert first_letter[0] == 'S' ''' Проверка, что при нажатии на баннер открывается другая страница ''' def test_banner(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() banner = wd.find_element_by_id('banner0') banner.click() url = wd.current_url self.close() assert url != 'http://localhost/index.php?route=product/category&path=20' ''' Проверка, что при нажатии в боковом меню Tablets открывается страница Tablets и на ней есть товар ''' def test_menu(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() list_group = wd.find_elements_by_css_selector('.list-group-item') list_group[5].click() card = wd.find_elements_by_css_selector('.caption h4 > a') card1 = card[0].get_attribute('innerHTML') self.close() assert card1 == 'Samsung Galaxy Tab 10.1' ''' Проверка, что при выборе товара в избранное, в сплывающем сообщении присутствует название товара ''' def test_message(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() like = wd.find_elements_by_css_selector('.button-group button') like[1].click() message = WebDriverWait(wd, 2).until( EC.visibility_of_any_elements_located( (By.CSS_SELECTOR, ".alert a"))) name_card = message[2].get_attribute('innerHTML') self.close() assert name_card == 'Apple Cinema 30"' ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()
class TestAccountLogin: ''' New Customer при клике на Continue меняется ссылка ''' def test_new_customer(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() continue_bt = wd.find_element_by_css_selector('.well:first-child a') continue_bt.click() elements = WebDriverWait(wd, 0.5).until( EC.url_to_be("http://localhost/index.php?route=account/register")) self.close() assert elements is True ''' При отправке пустой формы в Returning Customer, появляется сообщение об ошибке ''' def test_returning_customer(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login_bt = wd.find_element_by_css_selector('input[type="submit"]') login_bt.click() index = -1 message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located((By.CLASS_NAME, "alert"))) if message is not None: cl_message = message.get_attribute('class') index = cl_message.find('alert-danger') self.close() assert index > -1 ''' Проверка, что при нажатии Forgotten Password меняется url ''' def test_forgotten_password(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() link = wd.find_element_by_css_selector('.form-group a') link.click() elements = WebDriverWait(wd, 0.5).until( EC.url_to_be("http://localhost/index.php?route=account/forgotten")) self.close() assert elements is True ''' Проверка, что при вводе не существующего email и пароля, появляется сообщение, что пользователь не найден ''' def test_user_not_found(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() email = wd.find_element_by_css_selector('#input-email') email.send_keys('*****@*****.**') password = wd.find_element_by_css_selector('#input-password') password.send_keys('123') login_bt = wd.find_element_by_css_selector('input[type="submit"]') login_bt.click() time.sleep(0.5) message = wd.find_element_by_css_selector('.alert') user_none = message.get_attribute('innerHTML') index = user_none.find('E-Mail Address and/or Password') self.close() assert index != -1 ''' Проверка, что при вводе существующего email и пароля, пользователь авторизован ''' def test_account(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() email = wd.find_element_by_css_selector('#input-email') email.send_keys('*****@*****.**') password = wd.find_element_by_css_selector('#input-password') password.send_keys('1234') login_bt = wd.find_element_by_css_selector('input[type="submit"]') login_bt.click() account = WebDriverWait(wd, 2).until( EC.visibility_of_all_elements_located( (By.CSS_SELECTOR, "#content > h2"))) my_account = account[0].get_attribute('innerHTML') index = my_account.find('My Account') self.close() assert index != -1 ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()
class TestAccountLoginAdm: """ Проверка, что при отправке пустой формы, появляется предупреждающее собщение """ def test_login_null(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login = wd.find_element_by_css_selector('button[type="submit"]') login.click() index = -1 message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located((By.CLASS_NAME, "alert"))) if message is not None: cl_message = message.get_attribute('class') index = cl_message.find('alert-danger') self.close() assert index > -1 """ Проверка, что при вводе в форме только логина, появляется предупреждающее собщение """ def test_user_login(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login = wd.find_element_by_css_selector('#input-username') login.send_keys('user') button = wd.find_element_by_css_selector('button[type="submit"]') button.click() index = -1 message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located((By.CLASS_NAME, "alert"))) if message is not None: cl_message = message.get_attribute('class') index = cl_message.find('alert-danger') self.close() assert index > -1 """ Проверка, что при вводе в форме только пароля, появляется предупреждающее собщение """ def test_user_pass(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() passw = wd.find_element_by_css_selector('#input-password') passw.send_keys('bitnami') button = wd.find_element_by_css_selector('button[type="submit"]') button.click() index = -1 message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located((By.CLASS_NAME, "alert"))) if message is not None: cl_message = message.get_attribute('class') index = cl_message.find('alert-danger') self.close() assert index > -1 """ Проверка, что при ошибке в логине, нажав на крестик сообщения, оно закрывается """ def test_message_close(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login = wd.find_element_by_css_selector('#input-username') login.send_keys('user') button = wd.find_element_by_css_selector('button[type="submit"]') button.click() message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located( (By.CSS_SELECTOR, ".alert > .close"))) message.click() message1 = wd.find_elements_by_css_selector('.alert') self.close() assert len(message1) == 0 """ Проверка, что пользователь авторизован """ def test_authorization(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login = wd.find_element_by_css_selector('#input-username') login.send_keys('user') passw = wd.find_element_by_css_selector('#input-password') passw.send_keys('bitnami') button = wd.find_element_by_css_selector('button[type="submit"]') button.click() elements = WebDriverWait(wd, 0.5).until( EC.url_changes("http://localhost/admin/")) self.close() assert elements is True ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()
def wd(browser, url): browser_page = Browser(browser, url) wd = browser_page.get_wd() yield wd browser_page.closeBrowser()
class TestAdmin: """ авторизация """ def login(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() login = wd.find_element_by_css_selector('#input-username') login.send_keys('user') passw = wd.find_element_by_css_selector('#input-password') passw.send_keys('bitnami') button = wd.find_element_by_css_selector('button[type="submit"]') button.click() return wd ''' Проверка, что заголовок = 'Orders' ''' def test_total_orders(self, browser, url): wd = self.login(browser, url) tile_footer = wd.find_elements_by_css_selector('.tile-footer') view_more = tile_footer[0].find_element_by_tag_name('a') view_more.click() orders = wd.find_element_by_css_selector('h1') h1 = orders.get_attribute('innerHTML') result = h1.find('Orders') self.close() assert result != -1 ''' Проверка, перехода Systems -> Settings ''' def test_settings(self, browser, url): wd = self.login(browser, url) menu_system = wd.find_element_by_css_selector('#menu-system a') menu_system.click() settings = wd.find_element_by_css_selector( '#collapse7 > li:first-child a') settings.click() index = -1 table = wd.find_element_by_css_selector('.table') if table is not None: cl_table = table.get_attribute('class') index = cl_table.find('table table-bordered table-hover') self.close() assert index > -1 ''' Проверка перехода к разделу с товарами, что появляется таблица с товарами ''' def test_table(self, browser, url): wd = self.login(browser, url) menu_catalog = wd.find_element_by_css_selector('#menu-catalog a') menu_catalog.click() product = wd.find_element_by_css_selector( '#collapse1 > li:nth-child(2) a') product.click() index = -1 table = wd.find_element_by_css_selector('.table') if table is not None: cl_table = table.get_attribute('class') index = cl_table.find('table-bordered table-hover') self.close() assert index > -1 ''' Проверка логина ''' def test_login(self, browser, url): wd = self.login(browser, url) logout = wd.find_element_by_css_selector( '.navbar-right > li:last-child span') user_login = logout.get_attribute('innerHTML') index = user_login.find('Logout') self.close() assert index != -1 ''' Проверка разлогина ''' def test_logout(self, browser, url): wd = self.login(browser, url) logout = wd.find_element_by_css_selector( '.navbar-right > li:last-child span') logout.click() url = wd.current_url self.close() assert url.find('?route=common/login') > -1 ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()
class TestHomePage: ''' Проверка того, что мы на главной по title страницы ''' def test_title(self, browser, url): self.browser_page = Browser(browser, url) title = self.browser_page.get_wd().title self.close() assert title == 'Your Store' ''' Проверка номера телефона ''' def test_phone(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() topLinks = wd.find_element_by_id('top-links') print(topLinks) listInline = topLinks.find_elements_by_class_name('list-inline') print(listInline) li = listInline[0].find_elements_by_tag_name('li') print(li) span = li[0].find_element_by_tag_name('span') phone = span.get_attribute('innerHTML') self.close() assert phone == '123456789' ''' Проверка на то, что в Рекомендуемых товарах 4 карточки ''' def test_cards(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() product_layouts = self.browser_page.get_wd( ).find_elements_by_css_selector('.product-layout') self.close() assert len(product_layouts) == 4 ''' Проверка, что ссылка Yor Store переходит на домашнюю страницу ''' def test_href(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() logo = self.browser_page.get_wd().find_element_by_css_selector( '#logo a') logo.click() url = wd.current_url self.close() assert url.find('?route=common/home') > -1 ''' Проверка, что ссылка Поиска переходит на страницу поиска ''' def test_search(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() search = self.browser_page.get_wd().find_element_by_css_selector( '#search > .form-control') search.send_keys('iphone') button = self.browser_page.get_wd().find_element_by_css_selector( '#search > .input-group-btn') button.click() elements = WebDriverWait(wd, 0.5).until( EC.url_to_be( "http://localhost/index.php?route=product/search&search=iphone" )) self.close() assert elements is True ''' Проверка, что вторая карточка iphone переходит на страницу товара ''' def test_iphone(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() iphone = wd.find_elements_by_css_selector('.product-layout h4 > a') iphone[1].click() elements = WebDriverWait(wd, 0.5).until( EC.url_to_be("http://localhost/iphone")) self.close() assert elements is True ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()
class TestCatalogId: ''' На странице есть превьюшки ''' def test_img(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() count_elements = wd.find_elements_by_class_name('image-additional') print(len(count_elements)) # self.close() assert len(count_elements) > 0 ''' Проверка, что цена товара > 0 ''' def test_price(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() element = wd.find_element_by_css_selector('.list-unstyled h2') price = element.get_attribute('innerHTML') price = float(price.replace('$', '')) self.close() assert price > 0 ''' Проверка, что при добавлении товара в корзину, счетчик корзины изменился с 0 на 1 # ''' def test_count(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() element_product = wd.find_element_by_css_selector('#button-cart') element_product.click() WebDriverWait(wd, 2).until( EC.text_to_be_present_in_element((By.ID, 'cart-total'), '0 item(s) - $0.00')) el = wd.find_element_by_css_selector('#cart-total') cart = el.get_attribute('innerHTML') print(cart) index = cart.find('1 item') print(index) self.close() assert index != -1 ''' Проверка, что url превью совпадает с url открытой картинкой в галерее ''' def test_gallery(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() element = wd.find_element_by_css_selector('.thumbnails .thumbnail') href = element.get_attribute('href') element.click() element_gallery = WebDriverWait(wd, 0.5).until( EC.visibility_of_element_located((By.CLASS_NAME, "mfp-img"))) print(element_gallery) href_gallery = element_gallery.get_attribute('src') print(href_gallery) self.close() assert href == href_gallery ''' Проверка, что при отправке отзыва появляется сообщение ''' def test_reviews(self, browser, url): self.browser_page = Browser(browser, url) wd = self.browser_page.get_wd() element = wd.find_element_by_css_selector('a[href="#tab-review"]') element.click() name = wd.find_element_by_id('input-name') name.send_keys('Oleg') review = wd.find_element_by_id('input-review') review.send_keys(text) rating = wd.find_elements_by_css_selector('input[name="rating"]') rating[4].click() button_review = wd.find_element_by_id('button-review') button_review.click() index = -1 message = WebDriverWait(wd, 2).until( EC.visibility_of_element_located((By.CLASS_NAME, "alert"))) if message is not None: cl_message = message.get_attribute('class') index = cl_message.find('alert-success') self.close() assert index > -1 ''' Закрытие страницы ''' def close(self): self.browser_page.closeBrowser()