From 18b0b946a475a0ed69fb37f6ac611c407561b924 Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Mon, 31 Jul 2023 15:26:00 +0300 Subject: [PATCH 1/9] new try --- .gitignore | 3 +- conftest.py | 11 +++++ pages/base_page.py | 20 ++++++++ pages/home_page.py | 59 ++++++++++++++++++++++++ pages/locators/home_page_locators.py | 9 ++++ tests/test_home_page.py | 69 ++++++++++++++++++++++++++++ 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 conftest.py create mode 100644 pages/base_page.py create mode 100644 pages/home_page.py create mode 100644 pages/locators/home_page_locators.py create mode 100644 tests/test_home_page.py diff --git a/.gitignore b/.gitignore index f5e96db..c566ffd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -venv \ No newline at end of file +venv +/bd_creds.py diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..41852b4 --- /dev/null +++ b/conftest.py @@ -0,0 +1,11 @@ +from selenium import webdriver +import pytest + + +@pytest.fixture(scope='function') +def browser(): + chrome_browser = webdriver.Chrome() + chrome_browser.maximize_window() + chrome_browser.implicitly_wait(10) + yield chrome_browser + chrome_browser.quit() diff --git a/pages/base_page.py b/pages/base_page.py new file mode 100644 index 0000000..6945120 --- /dev/null +++ b/pages/base_page.py @@ -0,0 +1,20 @@ +from selenium.webdriver.chrome.webdriver import WebDriver +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC + + +class BasePage: + def __init__(self, browser: WebDriver): + self.browser = browser + self.base_url = 'https://front-test-a2ykv.ondigitalocean.app/' + + def find_element(self, args: tuple): + by_name, by_val = args + return self.browser.find_element(by_name, by_val) + + def find_elements(self, args: tuple): + by_name, by_val = args + return self.browser.find_elements(by_name, by_val) + + def wait_element(self, locator): + return WebDriverWait(self.browser, 10).until(EC.visibility_of_element_located(locator)) diff --git a/pages/home_page.py b/pages/home_page.py new file mode 100644 index 0000000..6b0fec6 --- /dev/null +++ b/pages/home_page.py @@ -0,0 +1,59 @@ +from selenium.webdriver.common.by import By +from bd_creds import take_text_by_front_id_from_db as bd_creds +from pages.locators import home_page_locators as hpl +from pages.base_page import BasePage + + +class HomePage(BasePage): + def __init__(self, browser): + super().__init__(browser) + + def open_page(self): + self.browser.get(self.base_url) + + def logo(self): + return self.find_element(hpl.train_lab_logo) + + def o_nas_button(self): + but_area = self.find_element(hpl.o_nas_bar) + return but_area.find_element(By.CLASS_NAME, 'btn-secondary') + + def o_nas_button_text(self): + but_list = self.find_element(hpl.o_nas_bar) + return but_list.find_element(By.CLASS_NAME, 'btn-secondary').text + + def tasks_button(self): + return self.find_element(hpl.tasks_but) + + def tasks_button_text(self): + return self.find_element(hpl.tasks_but).text + + def sign_in_button(self): + return self.find_element(hpl.sign_in_but) + + def sign_in_button_text(self): + return self.find_element(hpl.sign_in_but).text + + def success_banner_text(self): + self.wait_element(hpl.success_banner_bar) + return self.find_element(hpl.success_banner_bar).text + + def success_banner_text_takes_from_bd(self): + self.wait_element(hpl.success_banner_bar) + success_ban = self.find_element(hpl.success_banner_bar).text + if success_ban == bd_creds(1.1): + return True + else: + return False + + def our_simulators_banner_text(self): + self.wait_element(hpl.our_simulators_banner) + return self.find_element(hpl.our_simulators_banner).text + + def our_simulators_banner_text_takes_from_bd(self): + self.wait_element(hpl.our_simulators_banner) + simulators_ban = self.find_element(hpl.our_simulators_banner).text + if simulators_ban == bd_creds(1.2): + return True + else: + return False diff --git a/pages/locators/home_page_locators.py b/pages/locators/home_page_locators.py new file mode 100644 index 0000000..d58707b --- /dev/null +++ b/pages/locators/home_page_locators.py @@ -0,0 +1,9 @@ +from selenium.webdriver.common.by import By + + +train_lab_logo = (By.CSS_SELECTOR, 'img[alt="Logo"]') +o_nas_bar = (By.CSS_SELECTOR, 'a[href="#about"]') +tasks_but = (By.XPATH, '//a[@href="#tasks"]/button') +sign_in_but = (By.XPATH, '//a[@href="/auth"]/button') +success_banner_bar = (By.CLASS_NAME, 'Banner_h3_banner__BaCln') +our_simulators_banner = (By.CLASS_NAME, 'Banner_text_banner__EfApu') diff --git a/tests/test_home_page.py b/tests/test_home_page.py new file mode 100644 index 0000000..53fa802 --- /dev/null +++ b/tests/test_home_page.py @@ -0,0 +1,69 @@ +from pages.home_page import HomePage + + +def test_trainlab_logo_is_displayed(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.logo().is_displayed() + + +def test_o_nas_button_is_displayed(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.o_nas_button().is_displayed() + + +def test_o_nas_button_text_is_ok(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.o_nas_button_text() == 'О нас' + + +def test_tasks_button_is_displayed(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.tasks_button().is_displayed() + + +def test_tasks_button_text_is_ok(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.tasks_button_text() == 'Задания' + + +def test_sign_in_button_is_displayed(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.sign_in_button().is_displayed() + + +def test_sign_in_button_text_is_ok(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.sign_in_button_text() == 'Войти' + + +def test_success_banner_text_is_ok(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.success_banner_text() == 'Создай свой успех' + + +def test_success_banner_text_takes_from_bd(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.success_banner_text_takes_from_bd() is True + + +def test_our_simulators_banner_text_is_ok(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.our_simulators_banner_text() == 'Наши тренажеры' \ + ' разработаны на основе тестовых заданий работодателей. ' \ + 'выполняя задания и зарабатывая баллы, ты найдешь работу мечты' + + +def test_our_simulators_banner_text_takes_from_bd(browser): + home_page = HomePage(browser) + home_page.open_page() + assert home_page.our_simulators_banner_text_takes_from_bd() is True From c8e1e8a694d7416f277d3abec32b938439222ec9 Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Tue, 1 Aug 2023 11:38:59 +0300 Subject: [PATCH 2/9] pytest works --- conftest.py | 2 ++ requirements.txt | Bin 146 -> 1320 bytes tests/test_home_page.py | 1 + 3 files changed, 3 insertions(+) diff --git a/conftest.py b/conftest.py index 41852b4..a922a42 100644 --- a/conftest.py +++ b/conftest.py @@ -1,9 +1,11 @@ from selenium import webdriver +import chromedriver_autoinstaller import pytest @pytest.fixture(scope='function') def browser(): + chromedriver_autoinstaller.install() chrome_browser = webdriver.Chrome() chrome_browser.maximize_window() chrome_browser.implicitly_wait(10) diff --git a/requirements.txt b/requirements.txt index 8f4d514c381cd965a73d10ffad442620c58c27f9..b6508b28a06a9ac529c3899347883371ce13ecd3 100644 GIT binary patch literal 1320 zcmZ9M(QevM5JdMmQa=S08ypMTz);iVz2^2HU}Qfqs13IlI2xwnE01cXoDm zcCUZ`T3c^tYiwgP+ghck$_}=+!CKwF=vUZW*R_4JD}O)eeeaRdN{`K_=!;kmV(XMm z=2FpXN07U5=D})v(?z^gG&t^rDuoZ++XWG|Z~o%gNdxsO)tE^wD))N#F3z7`0p^AC zC0!fa3DpW$*{hyv`{Br$@<#8p7E`Y$c-}88Xuox)(A6qNy|q`Q4hXuuos_5UTX_kt zQ{}Vwx^y4GmyWIMpbJ)SsY+Nc>EgLCAgDljm2V%^wx{cpuU2VhEfzwj*{;$AxqOudBocQO)zJ%wU$DRQU!`fk^B=^_kp=v_&$V>_>;N#UhEY~Cp-KLfB0gs<8&1pn|CP1W_A?wi+6#~obQB>uLC^}KCPJ3 sH(^eCgKNF>b5G9Y>5Qt*sjkJo@OXI2$u6`d@E(=f3D=4*dz)4M0UI5`l>h($ literal 146 zcmXAiOAf;z3`F-F#=@aeS3V3vlv*Li^`wvg#$F2M@r{4U)<=~W9vjuc&yaRk@+v8Y3<#INX(P$P1RR_@Lndl P+pY04mfYrga=7##Vu&qM diff --git a/tests/test_home_page.py b/tests/test_home_page.py index 53fa802..cb96352 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -1,4 +1,5 @@ from pages.home_page import HomePage +from conftest import browser def test_trainlab_logo_is_displayed(browser): From dcd9017881b0b3160ec89af65428f6f8ee2400c7 Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Tue, 1 Aug 2023 12:17:37 +0300 Subject: [PATCH 3/9] bd connection change --- .gitignore | 1 + tests/test_home_page.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c566ffd..843a516 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ venv /bd_creds.py +/bd_data.py diff --git a/tests/test_home_page.py b/tests/test_home_page.py index cb96352..53fa802 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -1,5 +1,4 @@ from pages.home_page import HomePage -from conftest import browser def test_trainlab_logo_is_displayed(browser): From b1a75854c4ac19cf317888da9027d965ec3e807a Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Sun, 6 Aug 2023 10:48:05 +0300 Subject: [PATCH 4/9] ui tests bd allure --- .gitignore | 1 + database.py | 62 ++++++++++++++++++++ pages/home_page.py | 19 +------ requirements.txt | Bin 1320 -> 1524 bytes tests/test_home_page.py | 123 ++++++++++++++++++++++++++++++++-------- 5 files changed, 162 insertions(+), 43 deletions(-) create mode 100644 database.py diff --git a/.gitignore b/.gitignore index 843a516..230290e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ venv /bd_creds.py /bd_data.py +/reports/ diff --git a/database.py b/database.py new file mode 100644 index 0000000..2532814 --- /dev/null +++ b/database.py @@ -0,0 +1,62 @@ +import psycopg2 +from sshtunnel import SSHTunnelForwarder +import bd_data as bd + + +def change_text_in_database_by_front_id(front_id_bd, text_to_change): + try: + with SSHTunnelForwarder( + (f"{bd.bd_ip}", 22), + ssh_username=f"{bd.ssh_username}", + ssh_private_key=f"{bd.ssh_private_key}", + remote_bind_address=(f"{bd.remote_bind_address}", 25060)) as server: + + server.start() + + params = { + 'database': f"{bd.database}", + 'user': f"{bd.user}", + 'password': f"{bd.password}", + 'host': f"{bd.host}", + 'port': server.local_bind_port + } + + conn = psycopg2.connect(**params) + curs = conn.cursor() + curs.execute(f"update frontend_data SET text='{text_to_change}' WHERE front_id='{front_id_bd}';") + conn.commit() + conn.close() + return True + + except: + print("Connection Failed") + + +def take_text_from_database_by_front_id(front_id_bd): + try: + with SSHTunnelForwarder( + (f"{bd.bd_ip}", 22), + ssh_username=f"{bd.ssh_username}", + ssh_private_key=f"{bd.ssh_private_key}", + remote_bind_address=(f"{bd.remote_bind_address}", 25060)) as server: + + server.start() + + params = { + 'database': f"{bd.database}", + 'user': f"{bd.user}", + 'password': f"{bd.password}", + 'host': f"{bd.host}", + 'port': server.local_bind_port + } + + conn = psycopg2.connect(**params) + curs = conn.cursor() + curs.execute(f"SELECT text FROM frontend_data WHERE front_id='{front_id_bd}';") + text = curs.fetchall() + text_by_id = text[0][0] + conn.close() + return text_by_id + + except: + print("Connection Failed") diff --git a/pages/home_page.py b/pages/home_page.py index 6b0fec6..d603d24 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -1,5 +1,4 @@ from selenium.webdriver.common.by import By -from bd_creds import take_text_by_front_id_from_db as bd_creds from pages.locators import home_page_locators as hpl from pages.base_page import BasePage @@ -14,7 +13,7 @@ def open_page(self): def logo(self): return self.find_element(hpl.train_lab_logo) - def o_nas_button(self): + def about_us_button(self): but_area = self.find_element(hpl.o_nas_bar) return but_area.find_element(By.CLASS_NAME, 'btn-secondary') @@ -38,22 +37,6 @@ def success_banner_text(self): self.wait_element(hpl.success_banner_bar) return self.find_element(hpl.success_banner_bar).text - def success_banner_text_takes_from_bd(self): - self.wait_element(hpl.success_banner_bar) - success_ban = self.find_element(hpl.success_banner_bar).text - if success_ban == bd_creds(1.1): - return True - else: - return False - def our_simulators_banner_text(self): self.wait_element(hpl.our_simulators_banner) return self.find_element(hpl.our_simulators_banner).text - - def our_simulators_banner_text_takes_from_bd(self): - self.wait_element(hpl.our_simulators_banner) - simulators_ban = self.find_element(hpl.our_simulators_banner).text - if simulators_ban == bd_creds(1.2): - return True - else: - return False diff --git a/requirements.txt b/requirements.txt index b6508b28a06a9ac529c3899347883371ce13ecd3..8e9aba3e1be80ceb4d15a5ff03e7fb20c256e278 100644 GIT binary patch delta 227 zcmZ3%^@Y3s|Gz|r93U)ZC}K!u&}ArKsAMPsvWkJEEf5+p=rI^F7z0To23`g(25hP` z81fnNfO?aGbS@Brc*Qt$7X!`D1FF4cIA&DUc=+I1{R4S0x1zMH}RG0`htO%^!1f(2Ss delta 20 ccmeyuy@HGB|G$lSNz9x7FfU`Ae2rBO0A~CN8UO$Q diff --git a/tests/test_home_page.py b/tests/test_home_page.py index 53fa802..6f39672 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -1,69 +1,142 @@ from pages.home_page import HomePage +import database as Database +import allure +@allure.feature('Home page') +@allure.story('Trainlab logo') +@allure.title('Testing Trainlab logo') def test_trainlab_logo_is_displayed(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.logo().is_displayed() + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that Trainlab logo is displayed'): + assert home_page.logo().is_displayed() -def test_o_nas_button_is_displayed(browser): +@allure.feature('Home page') +@allure.story('About us button') +@allure.title('Testing about us button') +def test_about_us_button_is_displayed(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.o_nas_button().is_displayed() + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that about us button is displayed'): + assert home_page.about_us_button().is_displayed() +@allure.feature('Home page') +@allure.story('About us button') +@allure.title('Testing about us button') def test_o_nas_button_text_is_ok(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.o_nas_button_text() == 'О нас' + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that about us button text is displayed'): + assert home_page.o_nas_button_text() == 'О нас' +@allure.feature('Home page') +@allure.story('Tasks button') +@allure.title('Testing tasks button') def test_tasks_button_is_displayed(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.tasks_button().is_displayed() + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that tasks button is displayed'): + assert home_page.tasks_button().is_displayed() +@allure.feature('Home page') +@allure.story('Tasks button') +@allure.title('Testing tasks button') def test_tasks_button_text_is_ok(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.tasks_button_text() == 'Задания' + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that tasks button text is displayed'): + assert home_page.tasks_button_text() == 'Задания' +@allure.feature('Home page') +@allure.story('Sign in button') +@allure.title('Testing sign in button') def test_sign_in_button_is_displayed(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.sign_in_button().is_displayed() + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that sign in button is displayed'): + assert home_page.sign_in_button().is_displayed() +@allure.feature('Home page') +@allure.story('Sign in button') +@allure.title('Testing sign in button') def test_sign_in_button_text_is_ok(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.sign_in_button_text() == 'Войти' + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that sign in button text is displayed'): + assert home_page.sign_in_button_text() == 'Войти' +@allure.feature('Home page') +@allure.story('Success banner') +@allure.title('Testing success banner') def test_success_banner_text_is_ok(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.success_banner_text() == 'Создай свой успех' + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that success banner text is displayed'): + assert home_page.success_banner_text() == 'Создай свой успех' +@allure.feature('Home page') +@allure.story('Success banner') +@allure.title('Testing success banner') def test_success_banner_text_takes_from_bd(browser): + with allure.step('Take text from database by front id'): + text_from_database = Database.take_text_from_database_by_front_id(1.1) + with allure.step('Change text in database by front id'): + Database.change_text_in_database_by_front_id(1.1, 'Текст изменен') home_page = HomePage(browser) - home_page.open_page() - assert home_page.success_banner_text_takes_from_bd() is True - - + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Take text from element on website'): + new_text_from_website = home_page.success_banner_text() + with allure.step('Return text to database by front id'): + Database.change_text_in_database_by_front_id(1.1, f"{text_from_database}") + with allure.step('Check that text for website element takes from database'): + assert new_text_from_website == 'Текст изменен' + + +@allure.feature('Home page') +@allure.story('Simulators banner') +@allure.title('Testing simulators banner') def test_our_simulators_banner_text_is_ok(browser): home_page = HomePage(browser) - home_page.open_page() - assert home_page.our_simulators_banner_text() == 'Наши тренажеры' \ + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that simulators banner text is displayed'): + assert home_page.our_simulators_banner_text() == 'Наши тренажеры' \ ' разработаны на основе тестовых заданий работодателей. ' \ 'выполняя задания и зарабатывая баллы, ты найдешь работу мечты' +@allure.feature('Home page') +@allure.story('Simulators banner') +@allure.title('Testing simulators banner') def test_our_simulators_banner_text_takes_from_bd(browser): + with allure.step('Take text from database by front id'): + text_from_database = Database.take_text_from_database_by_front_id(1.2) + with allure.step('Change text in database by front id'): + Database.change_text_in_database_by_front_id(1.2, 'Текст изменен') home_page = HomePage(browser) - home_page.open_page() - assert home_page.our_simulators_banner_text_takes_from_bd() is True + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Take text from element on website'): + new_text_from_website = home_page.our_simulators_banner_text() + with allure.step('Return text to database by front id'): + Database.change_text_in_database_by_front_id(1.2, f"{text_from_database}") + with allure.step('Check that text for website element takes from database'): + assert new_text_from_website == 'Текст изменен' From f678ecfb425184dc859cd3d013df435dc21b903c Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Sun, 6 Aug 2023 17:13:22 +0300 Subject: [PATCH 5/9] ui tests bd allure --- pages/home_page.py | 6 ++++-- pages/locators/home_page_locators.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pages/home_page.py b/pages/home_page.py index d603d24..29ba482 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -22,10 +22,12 @@ def o_nas_button_text(self): return but_list.find_element(By.CLASS_NAME, 'btn-secondary').text def tasks_button(self): - return self.find_element(hpl.tasks_but) + but_list = self.find_element(hpl.tasks_but) + return but_list.find_element(By.CLASS_NAME, 'btn-secondary') def tasks_button_text(self): - return self.find_element(hpl.tasks_but).text + but_list = self.find_element(hpl.tasks_but) + return but_list.find_element(By.CLASS_NAME, 'btn-secondary').text def sign_in_button(self): return self.find_element(hpl.sign_in_but) diff --git a/pages/locators/home_page_locators.py b/pages/locators/home_page_locators.py index d58707b..a7579d2 100644 --- a/pages/locators/home_page_locators.py +++ b/pages/locators/home_page_locators.py @@ -3,7 +3,7 @@ train_lab_logo = (By.CSS_SELECTOR, 'img[alt="Logo"]') o_nas_bar = (By.CSS_SELECTOR, 'a[href="#about"]') -tasks_but = (By.XPATH, '//a[@href="#tasks"]/button') +tasks_but = (By.CSS_SELECTOR, 'a[href="#tasks"]') sign_in_but = (By.XPATH, '//a[@href="/auth"]/button') success_banner_bar = (By.CLASS_NAME, 'Banner_h3_banner__BaCln') our_simulators_banner = (By.CLASS_NAME, 'Banner_text_banner__EfApu') From e22cd22d95f6d4da01bfd475dccc5842fc65d150 Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Fri, 11 Aug 2023 11:42:04 +0300 Subject: [PATCH 6/9] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D0=BB=D0=BE=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D0=BE=20.text=20/=20.is=5Fdisplayed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database.py | 3 ++- pages/home_page.py | 25 +++++++++++-------------- pages/locators/home_page_locators.py | 6 +++--- tests/test_home_page.py | 18 +++++++++--------- 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/database.py b/database.py index 2532814..a5c510f 100644 --- a/database.py +++ b/database.py @@ -23,7 +23,8 @@ def change_text_in_database_by_front_id(front_id_bd, text_to_change): conn = psycopg2.connect(**params) curs = conn.cursor() - curs.execute(f"update frontend_data SET text='{text_to_change}' WHERE front_id='{front_id_bd}';") + curs.execute(f"update frontend_data SET text='{text_to_change}'" + f" WHERE front_id='{front_id_bd}';") conn.commit() conn.close() return True diff --git a/pages/home_page.py b/pages/home_page.py index 29ba482..39ce713 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -6,31 +6,28 @@ class HomePage(BasePage): def __init__(self, browser): super().__init__(browser) + self.browser = browser def open_page(self): self.browser.get(self.base_url) - def logo(self): - return self.find_element(hpl.train_lab_logo) + def logo_is_displayed(self): + return self.find_element(hpl.train_lab_logo).is_displayed() - def about_us_button(self): - but_area = self.find_element(hpl.o_nas_bar) - return but_area.find_element(By.CLASS_NAME, 'btn-secondary') + def about_us_button_is_displayed(self): + return self.find_element(hpl.about_us_btn).is_displayed() def o_nas_button_text(self): - but_list = self.find_element(hpl.o_nas_bar) - return but_list.find_element(By.CLASS_NAME, 'btn-secondary').text + return self.find_element(hpl.about_us_btn).text - def tasks_button(self): - but_list = self.find_element(hpl.tasks_but) - return but_list.find_element(By.CLASS_NAME, 'btn-secondary') + def tasks_button_is_displayed(self): + return self.find_element(hpl.tasks_btn).is_displayed() def tasks_button_text(self): - but_list = self.find_element(hpl.tasks_but) - return but_list.find_element(By.CLASS_NAME, 'btn-secondary').text + return self.find_element(hpl.tasks_btn).text - def sign_in_button(self): - return self.find_element(hpl.sign_in_but) + def sign_in_button_is_displayed(self): + return self.find_element(hpl.sign_in_but).is_displayed() def sign_in_button_text(self): return self.find_element(hpl.sign_in_but).text diff --git a/pages/locators/home_page_locators.py b/pages/locators/home_page_locators.py index a7579d2..9026704 100644 --- a/pages/locators/home_page_locators.py +++ b/pages/locators/home_page_locators.py @@ -2,8 +2,8 @@ train_lab_logo = (By.CSS_SELECTOR, 'img[alt="Logo"]') -o_nas_bar = (By.CSS_SELECTOR, 'a[href="#about"]') -tasks_but = (By.CSS_SELECTOR, 'a[href="#tasks"]') -sign_in_but = (By.XPATH, '//a[@href="/auth"]/button') +about_us_btn = (By.CSS_SELECTOR, 'a[href="#about"] .btn.btn-secondary') +tasks_btn = (By.CSS_SELECTOR, 'a[href="#tasks"] .btn.btn-secondary') +sign_in_but = (By.XPATH, '//a[@href="/auth"]/button') #CSS нужно использовать success_banner_bar = (By.CLASS_NAME, 'Banner_h3_banner__BaCln') our_simulators_banner = (By.CLASS_NAME, 'Banner_text_banner__EfApu') diff --git a/tests/test_home_page.py b/tests/test_home_page.py index 6f39672..bf6e532 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -1,6 +1,6 @@ -from pages.home_page import HomePage -import database as Database import allure +import database as Database +from pages.home_page import HomePage @allure.feature('Home page') @@ -11,7 +11,7 @@ def test_trainlab_logo_is_displayed(browser): with allure.step('Open Home page'): home_page.open_page() with allure.step('Check that Trainlab logo is displayed'): - assert home_page.logo().is_displayed() + assert home_page.logo_is_displayed() @allure.feature('Home page') @@ -22,13 +22,13 @@ def test_about_us_button_is_displayed(browser): with allure.step('Open Home page'): home_page.open_page() with allure.step('Check that about us button is displayed'): - assert home_page.about_us_button().is_displayed() + assert home_page.about_us_button_is_displayed() @allure.feature('Home page') @allure.story('About us button') @allure.title('Testing about us button') -def test_o_nas_button_text_is_ok(browser): +def test_about_us_button_text_is_ok(browser): home_page = HomePage(browser) with allure.step('Open Home page'): home_page.open_page() @@ -44,7 +44,7 @@ def test_tasks_button_is_displayed(browser): with allure.step('Open Home page'): home_page.open_page() with allure.step('Check that tasks button is displayed'): - assert home_page.tasks_button().is_displayed() + assert home_page.tasks_button_is_displayed() @allure.feature('Home page') @@ -66,7 +66,7 @@ def test_sign_in_button_is_displayed(browser): with allure.step('Open Home page'): home_page.open_page() with allure.step('Check that sign in button is displayed'): - assert home_page.sign_in_button().is_displayed() + assert home_page.sign_in_button_is_displayed() @allure.feature('Home page') @@ -94,7 +94,7 @@ def test_success_banner_text_is_ok(browser): @allure.feature('Home page') @allure.story('Success banner') @allure.title('Testing success banner') -def test_success_banner_text_takes_from_bd(browser): +def test_success_banner_text_takes_from_bd(browser): #надо менять структуру with allure.step('Take text from database by front id'): text_from_database = Database.take_text_from_database_by_front_id(1.1) with allure.step('Change text in database by front id'): @@ -126,7 +126,7 @@ def test_our_simulators_banner_text_is_ok(browser): @allure.feature('Home page') @allure.story('Simulators banner') @allure.title('Testing simulators banner') -def test_our_simulators_banner_text_takes_from_bd(browser): +def test_our_simulators_banner_text_takes_from_bd(browser): #надо менять структуру with allure.step('Take text from database by front id'): text_from_database = Database.take_text_from_database_by_front_id(1.2) with allure.step('Change text in database by front id'): From 91ee630208eca3f44cee70b309ea770978a17c7c Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Fri, 11 Aug 2023 12:21:33 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=83=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/home_page.py | 10 ++++++++-- pages/locators/home_page_locators.py | 3 ++- tests/test_home_page.py | 22 ++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/pages/home_page.py b/pages/home_page.py index 39ce713..2ed18aa 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -27,10 +27,10 @@ def tasks_button_text(self): return self.find_element(hpl.tasks_btn).text def sign_in_button_is_displayed(self): - return self.find_element(hpl.sign_in_but).is_displayed() + return self.find_element(hpl.sign_in_btn).is_displayed() def sign_in_button_text(self): - return self.find_element(hpl.sign_in_but).text + return self.find_element(hpl.sign_in_btn).text def success_banner_text(self): self.wait_element(hpl.success_banner_bar) @@ -39,3 +39,9 @@ def success_banner_text(self): def our_simulators_banner_text(self): self.wait_element(hpl.our_simulators_banner) return self.find_element(hpl.our_simulators_banner).text + + def start_the_journey_button_is_displayed(self): + return self.find_element(hpl.start_the_journey_btn).is_displayed() + + def start_the_journey_button_text(self): + return self.find_element(hpl.start_the_journey_btn).text diff --git a/pages/locators/home_page_locators.py b/pages/locators/home_page_locators.py index 9026704..72c77d6 100644 --- a/pages/locators/home_page_locators.py +++ b/pages/locators/home_page_locators.py @@ -4,6 +4,7 @@ train_lab_logo = (By.CSS_SELECTOR, 'img[alt="Logo"]') about_us_btn = (By.CSS_SELECTOR, 'a[href="#about"] .btn.btn-secondary') tasks_btn = (By.CSS_SELECTOR, 'a[href="#tasks"] .btn.btn-secondary') -sign_in_but = (By.XPATH, '//a[@href="/auth"]/button') #CSS нужно использовать +sign_in_btn = (By.XPATH, '//a[@href="/auth"]/button') #CSS нужно использовать success_banner_bar = (By.CLASS_NAME, 'Banner_h3_banner__BaCln') our_simulators_banner = (By.CLASS_NAME, 'Banner_text_banner__EfApu') +start_the_journey_btn = (By.CLASS_NAME, 'Banner_btn_banner__ZteJM') diff --git a/tests/test_home_page.py b/tests/test_home_page.py index bf6e532..ddbbe76 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -140,3 +140,25 @@ def test_our_simulators_banner_text_takes_from_bd(browser): #надо меня Database.change_text_in_database_by_front_id(1.2, f"{text_from_database}") with allure.step('Check that text for website element takes from database'): assert new_text_from_website == 'Текст изменен' + + +@allure.feature('Home page') +@allure.story('Start the journey button') +@allure.title('Testing start the journey button') +def test_start_the_journey_button_is_displayed(browser): + home_page = HomePage(browser) + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that start the journey button is displayed'): + assert home_page.start_the_journey_button_is_displayed() + + +@allure.feature('Home page') +@allure.story('Start the journey button') +@allure.title('Testing start the journey button') +def test_start_the_journey_button_text_is_ok(browser): + home_page = HomePage(browser) + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that start the journey button text is displayed'): + assert home_page.start_the_journey_button_text() == 'Начать путь' From 7962d430631482497ad12f4a59f61ce633edb81c Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Fri, 11 Aug 2023 12:21:46 +0300 Subject: [PATCH 8/9] =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=83=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/home_page.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/home_page.py b/pages/home_page.py index 2ed18aa..55e8ef3 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -1,4 +1,3 @@ -from selenium.webdriver.common.by import By from pages.locators import home_page_locators as hpl from pages.base_page import BasePage From f59245886da0e122e390f549675dd6211425a66b Mon Sep 17 00:00:00 2001 From: Aleksandr Voschilo Date: Sun, 13 Aug 2023 11:21:19 +0300 Subject: [PATCH 9/9] tests --- pages/home_page.py | 9 ++++++++ pages/locators/home_page_locators.py | 3 +++ tests/test_home_page.py | 33 ++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/pages/home_page.py b/pages/home_page.py index 55e8ef3..9661bc0 100644 --- a/pages/home_page.py +++ b/pages/home_page.py @@ -44,3 +44,12 @@ def start_the_journey_button_is_displayed(self): def start_the_journey_button_text(self): return self.find_element(hpl.start_the_journey_btn).text + + def sql_banner_is_displayed(self): + return self.find_element(hpl.sql_banner).is_displayed() + + def python_banner_is_displayed(self): + return self.find_element(hpl.python_banner).is_displayed() + + def java_script_banner_is_displayed(self): + return self.find_element(hpl.java_script_banner).is_displayed() diff --git a/pages/locators/home_page_locators.py b/pages/locators/home_page_locators.py index 72c77d6..ab77e65 100644 --- a/pages/locators/home_page_locators.py +++ b/pages/locators/home_page_locators.py @@ -8,3 +8,6 @@ success_banner_bar = (By.CLASS_NAME, 'Banner_h3_banner__BaCln') our_simulators_banner = (By.CLASS_NAME, 'Banner_text_banner__EfApu') start_the_journey_btn = (By.CLASS_NAME, 'Banner_btn_banner__ZteJM') +sql_banner = (By.CSS_SELECTOR, 'li[data-index="0"] h3') +python_banner = (By.CSS_SELECTOR, 'li[data-index="1"] h3') +java_script_banner = (By.CSS_SELECTOR, 'li[data-index="2"] h3') diff --git a/tests/test_home_page.py b/tests/test_home_page.py index ddbbe76..f7898f1 100644 --- a/tests/test_home_page.py +++ b/tests/test_home_page.py @@ -162,3 +162,36 @@ def test_start_the_journey_button_text_is_ok(browser): home_page.open_page() with allure.step('Check that start the journey button text is displayed'): assert home_page.start_the_journey_button_text() == 'Начать путь' + + +@allure.feature('Home page') +@allure.story('SQL banner') +@allure.title('Testing SQL banner') +def test_sql_banner_is_displayed(browser): + home_page = HomePage(browser) + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that SQL banner is displayed'): + assert home_page.sql_banner_is_displayed() + + +@allure.feature('Home page') +@allure.story('Python banner') +@allure.title('Testing Python banner') +def test_python_banner_is_displayed(browser): + home_page = HomePage(browser) + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that Python banner is displayed'): + assert home_page.python_banner_is_displayed() + + +@allure.feature('Home page') +@allure.story('JavaScript banner') +@allure.title('Testing JavaScript banner') +def test_java_script_banner_is_displayed(browser): + home_page = HomePage(browser) + with allure.step('Open Home page'): + home_page.open_page() + with allure.step('Check that JavaScript banner is displayed'): + assert home_page.java_script_banner_is_displayed()