привел к более каноничной структуре
This commit is contained in:
parent
18bfc4a26a
commit
26a326ba75
@ -1,58 +0,0 @@
|
||||
import pytest
|
||||
import time
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from my_constants import EMAIL, PASSWORD
|
||||
|
||||
|
||||
@pytest.mark.order(1)
|
||||
@pytest.fixture()
|
||||
def driver():
|
||||
driver = webdriver.Chrome()
|
||||
driver.maximize_window()
|
||||
driver.get('https://luna73.ru/')
|
||||
time.sleep(2)
|
||||
yield driver
|
||||
driver.close()
|
||||
|
||||
|
||||
@pytest.mark.order(2)
|
||||
@pytest.fixture()
|
||||
def login(driver):
|
||||
login_button = driver.find_element(By.CLASS_NAME, 'widget-overlay')
|
||||
driver.execute_script("arguments[0].scrollIntoView(true);", login_button)
|
||||
login_button.click()
|
||||
time.sleep(3)
|
||||
the_iframe = driver.find_element(By.ID, "kw-iframe")
|
||||
driver.switch_to.frame(the_iframe)
|
||||
email_field = driver.find_element(By.NAME, 'email')
|
||||
password_field = driver.find_element(By.NAME, 'password')
|
||||
email_field.send_keys(EMAIL)
|
||||
password_field.send_keys(PASSWORD)
|
||||
enter_button = driver.find_element(By.CLASS_NAME, 'login-form__button')
|
||||
enter_button.click()
|
||||
time.sleep(2)
|
||||
close_button = driver.find_element(By.CLASS_NAME, 'popup-close-icon')
|
||||
close_button.click()
|
||||
time.sleep(2)
|
||||
driver.switch_to.default_content()
|
||||
yield driver
|
||||
|
||||
|
||||
@pytest.mark.order(3)
|
||||
@pytest.fixture()
|
||||
def open_profile(login):
|
||||
profile_icon_main = login.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div/nav/div/div[1]/div")
|
||||
login.execute_script(
|
||||
"arguments[0].scrollIntoView(true);", profile_icon_main)
|
||||
profile_icon_main.click()
|
||||
time.sleep(2)
|
||||
the_iframe_window = login.find_element(By.ID, "kw-iframe")
|
||||
login.switch_to.frame(the_iframe_window)
|
||||
login.find_element(By.CLASS_NAME, 'button-back').click()
|
||||
profile_icon_window = login.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div[1]/button[1]/img")
|
||||
profile_icon_window.click()
|
||||
time.sleep(2)
|
||||
yield login
|
24
conftest.py
Normal file
24
conftest.py
Normal file
@ -0,0 +1,24 @@
|
||||
import pytest
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from pages.homepage import HomePage
|
||||
import time
|
||||
|
||||
|
||||
@pytest.mark.order(1)
|
||||
@pytest.fixture()
|
||||
def driver():
|
||||
driver = webdriver.Chrome()
|
||||
driver.maximize_window()
|
||||
time.sleep(2)
|
||||
yield driver
|
||||
driver.close()
|
||||
|
||||
|
||||
@pytest.mark.order(2)
|
||||
@pytest.fixture()
|
||||
def login(driver):
|
||||
home_page = HomePage(driver)
|
||||
home_page.open()
|
||||
home_page.login()
|
||||
yield home_page
|
0
pages/box_office.py
Normal file
0
pages/box_office.py
Normal file
187
pages/homepage.py
Normal file
187
pages/homepage.py
Normal file
@ -0,0 +1,187 @@
|
||||
import time
|
||||
from selenium.webdriver.common.by import By
|
||||
from my_constants import EMAIL, PASSWORD
|
||||
|
||||
|
||||
class HomePage:
|
||||
|
||||
def __init__(self, driver):
|
||||
self.__driver = driver
|
||||
|
||||
def open(self):
|
||||
self.__driver.get('https://luna73.ru/')
|
||||
time.sleep(2)
|
||||
self.__header = self.__driver.find_elements(
|
||||
By.CLASS_NAME, 'menu__item')
|
||||
|
||||
def get_header(self):
|
||||
return self.__header
|
||||
|
||||
def __click_feedback(self):
|
||||
feedback_button = self.__driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div/nav/div/div[2]/button")
|
||||
self.__driver.execute_script(
|
||||
"arguments[0].scrollIntoView(true);", feedback_button)
|
||||
feedback_button.click()
|
||||
time.sleep(2)
|
||||
|
||||
def send_non_empty_feedback(self):
|
||||
self.__click_feedback()
|
||||
textarea = self.__driver.find_element(By.CLASS_NAME, 'textarea')
|
||||
textarea.send_keys('a')
|
||||
send_button = self.__driver.find_element(
|
||||
By.XPATH, '/html/body/div[3]/div/div[2]/div/div/div/div[3]/button')
|
||||
send_button.click()
|
||||
time.sleep(2)
|
||||
|
||||
def login(self):
|
||||
login_button = self.__driver.find_element(
|
||||
By.CLASS_NAME, 'widget-overlay')
|
||||
self.__driver.execute_script(
|
||||
"arguments[0].scrollIntoView(true);", login_button)
|
||||
login_button.click()
|
||||
time.sleep(3)
|
||||
the_iframe = self.__driver.find_element(By.ID, "kw-iframe")
|
||||
self.__driver.switch_to.frame(the_iframe)
|
||||
email_field = self.__driver.find_element(By.NAME, 'email')
|
||||
password_field = self.__driver.find_element(By.NAME, 'password')
|
||||
email_field.send_keys(EMAIL)
|
||||
password_field.send_keys(PASSWORD)
|
||||
enter_button = self.__driver.find_element(
|
||||
By.CLASS_NAME, 'login-form__button')
|
||||
enter_button.click()
|
||||
time.sleep(2)
|
||||
close_button = self.__driver.find_element(
|
||||
By.CLASS_NAME, 'popup-close-icon')
|
||||
close_button.click()
|
||||
time.sleep(2)
|
||||
self.__driver.switch_to.default_content()
|
||||
self.__logged = True
|
||||
|
||||
def get_driver(self):
|
||||
return self.__driver
|
||||
|
||||
def open_box_office(self):
|
||||
if not self.__logged:
|
||||
self.login()
|
||||
profile_icon_main = self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div/nav/div/div[1]/div")
|
||||
self.get_driver().execute_script(
|
||||
"arguments[0].scrollIntoView(true);", profile_icon_main)
|
||||
profile_icon_main.click()
|
||||
time.sleep(2)
|
||||
the_iframe_window = self.get_driver().find_element(By.ID, "kw-iframe")
|
||||
self.get_driver().switch_to.frame(the_iframe_window)
|
||||
self.click_back()
|
||||
time.sleep(2)
|
||||
|
||||
def click_profile(self):
|
||||
profile_icon_window = self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div[1]/button[1]/img")
|
||||
profile_icon_window.click()
|
||||
time.sleep(2)
|
||||
|
||||
def get_profile_items_len(self):
|
||||
self.open_box_office()
|
||||
self.click_profile()
|
||||
menu = [i.text for i in self.get_driver().find_elements(
|
||||
By.CLASS_NAME, 'account-menu__item')]
|
||||
menu.pop()
|
||||
self.click_profile()
|
||||
return len(menu)
|
||||
|
||||
def click_back(self):
|
||||
self.get_driver().find_element(
|
||||
By.XPATH, "//div[@class='button-back']/*/*").click()
|
||||
time.sleep(2)
|
||||
|
||||
def get_current_profile_page(self):
|
||||
return self.get_driver().find_element(
|
||||
By.CLASS_NAME, 'overlay-header__info-text').get_attribute("textContent")
|
||||
|
||||
def get_profile_item(self, ind):
|
||||
return self.get_driver().find_element(
|
||||
By.XPATH, f"/html/body/div[2]/nav/a[{ind}]")
|
||||
|
||||
def set_default(self):
|
||||
self.get_driver().switch_to.default_content()
|
||||
|
||||
def get_profile_fields(self):
|
||||
return self.get_driver().find_elements(By.XPATH, "//*[@class='profile-form__field']//input")[:-1]
|
||||
|
||||
def check_profile_error(self, ind):
|
||||
return not self.get_driver().find_element(
|
||||
By.XPATH, f"//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/div[{ind + 1}]/div[3]").is_displayed()
|
||||
|
||||
def click_change_email(self):
|
||||
self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/a[1]").click()
|
||||
time.sleep(1)
|
||||
|
||||
def send_wrong_email(self):
|
||||
self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[3]/div[2]/input").send_keys('a')
|
||||
|
||||
def check_email_error(self):
|
||||
return not self.get_driver().find_element(
|
||||
By.XPATH, f"//div[@class='input__error']").is_displayed()
|
||||
|
||||
def change_password_click(self):
|
||||
change_password = self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/a[2]")
|
||||
self.get_driver().execute_script(
|
||||
"arguments[0].scrollIntoView(true);", change_password)
|
||||
change_password.click()
|
||||
time.sleep(1)
|
||||
|
||||
def get_password_fields(self):
|
||||
return [self.get_driver().find_element(By.NAME, 'old_password'),
|
||||
self.get_driver().find_element(By.NAME, 'password'),
|
||||
self.get_driver().find_element(By.NAME, 'repeat_password')]
|
||||
|
||||
def check_old_new_password_error(self):
|
||||
return not self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[3]/div[2]/div[2]").is_displayed()
|
||||
|
||||
def check_wrong_repeat_password_error(self):
|
||||
return not self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[4]/div[2]/div[2]").is_displayed()
|
||||
|
||||
def check_wrong_old_password_error(self):
|
||||
return not self.get_driver().find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[2]/div[2]/div[2]").is_displayed()
|
||||
|
||||
def check_warnings_error(self):
|
||||
return not len(self.get_driver().find_elements(
|
||||
By.XPATH, "//div[@class='input__error']")) == 1
|
||||
|
||||
def click_change_password(self):
|
||||
self.get_driver().find_element(By.CLASS_NAME, 'login-form__button').click()
|
||||
time.sleep(1)
|
||||
|
||||
def open_session(self):
|
||||
self.get_driver().find_element(By.XPATH, "//*[@id='root']/div/div/div/div[2]/div/a[1]/div[2]/div[2]/div/div[1]").click()
|
||||
time.sleep(3)
|
||||
the_iframe = self.get_driver().find_element(By.ID, "kw-iframe")
|
||||
self.get_driver().switch_to.frame(the_iframe)
|
||||
|
||||
def open_film(self):
|
||||
film_name = self.get_driver().find_element(By.CLASS_NAME, 'hall-schema-popup__title').text
|
||||
self.get_driver().find_element(By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div/div/div[4]/div[2]/div/div/canvas").click()
|
||||
time.sleep(1)
|
||||
return film_name
|
||||
|
||||
def click_buy(self):
|
||||
self.get_driver().find_element(By.XPATH, "//button[@type='button']").click()
|
||||
time.sleep(2)
|
||||
|
||||
def click_continue(self):
|
||||
self.get_driver().find_element(By.XPATH, "//button[text()='Продолжить']").click()
|
||||
time.sleep(2)
|
||||
|
||||
def make_payment(self):
|
||||
self.get_driver().find_element(By.XPATH, "//span[text()='Оплатить через СБП']").click()
|
||||
time.sleep(2)
|
||||
|
||||
def check_payment_shows(self):
|
||||
return self.get_driver().find_element(By.XPATH, "//*[text()='Отсканируйте и оплатите в приложении банка.']").is_displayed()
|
27
test/test_information_module.py
Normal file
27
test/test_information_module.py
Normal file
@ -0,0 +1,27 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
from pages.homepage import HomePage
|
||||
import time
|
||||
|
||||
|
||||
def test_header_len(driver):
|
||||
home_page = HomePage(driver)
|
||||
home_page.open()
|
||||
assert len(home_page.get_header()) > 0
|
||||
|
||||
|
||||
def test_header_navigation(driver):
|
||||
home_page = HomePage(driver)
|
||||
home_page.open()
|
||||
header = home_page.get_header()
|
||||
for menu_item in header:
|
||||
driver.execute_script("arguments[0].scrollIntoView(true);", menu_item)
|
||||
menu_item.click()
|
||||
assert menu_item.is_enabled()
|
||||
|
||||
|
||||
def test_feedback(login):
|
||||
home_page = login
|
||||
home_page.send_non_empty_feedback()
|
||||
success_img = home_page.get_driver().find_element(
|
||||
By.XPATH, '/html/body/div[3]/div/div[2]/div/div/div/div[2]/div/img')
|
||||
assert success_img is not None
|
111
test/test_profile_module.py
Normal file
111
test/test_profile_module.py
Normal file
@ -0,0 +1,111 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
from my_constants import EMAIL, PASSWORD
|
||||
import time
|
||||
|
||||
|
||||
def password_step(home_page):
|
||||
home_page.change_password_click()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def password_back_step(home_page):
|
||||
home_page.click_back()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def old_new_password(home_page):
|
||||
old_password, password, repeat_password = home_page.get_password_fields()
|
||||
old_password.send_keys(PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert not home_page.check_old_new_password_error()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def wrong_repeat_password(home_page):
|
||||
old_password, password, repeat_password = home_page.get_password_fields()
|
||||
old_password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert not home_page.check_wrong_repeat_password_error()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def wrong_old_password(home_page):
|
||||
old_password, password, repeat_password = home_page.get_password_fields()
|
||||
old_password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'a')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'a')
|
||||
time.sleep(1)
|
||||
home_page.click_change_password()
|
||||
assert not home_page.check_wrong_old_password_error()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def check_warnings(home_page):
|
||||
old_password, password, repeat_password = home_page.get_password_fields()
|
||||
old_password.send_keys(PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert not home_page.check_warnings_error()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def test_navigation(login):
|
||||
home_page = login
|
||||
len_menu = home_page.get_profile_items_len()
|
||||
for ind in range(len_menu):
|
||||
home_page.click_profile()
|
||||
element = home_page.get_profile_item(ind + 1)
|
||||
to_check1 = element.text
|
||||
element.click()
|
||||
time.sleep(2)
|
||||
to_check2 = home_page.get_current_profile_page()
|
||||
assert to_check1 == to_check2
|
||||
home_page.click_back()
|
||||
time.sleep(2)
|
||||
home_page.set_default()
|
||||
|
||||
|
||||
def test_profile_changes(login):
|
||||
home_page = login
|
||||
home_page.open_box_office()
|
||||
home_page.click_profile()
|
||||
home_page.get_profile_item(2).click()
|
||||
time.sleep(2)
|
||||
fields = home_page.get_profile_fields()
|
||||
for i in range(len(fields)):
|
||||
fields[i].clear()
|
||||
fields[i].send_keys('a')
|
||||
time.sleep(1)
|
||||
assert home_page.check_profile_error(i) == False
|
||||
home_page.click_change_email()
|
||||
time.sleep(1)
|
||||
home_page.send_wrong_email()
|
||||
assert not home_page.check_email_error()
|
||||
home_page.click_back()
|
||||
time.sleep(1)
|
||||
password_step(home_page)
|
||||
old_new_password(home_page)
|
||||
password_back_step(home_page)
|
||||
password_step(home_page)
|
||||
wrong_repeat_password(home_page)
|
||||
password_back_step(home_page)
|
||||
password_step(home_page)
|
||||
wrong_old_password(home_page)
|
||||
password_back_step(home_page)
|
||||
password_step(home_page)
|
||||
check_warnings(home_page)
|
||||
password_back_step(home_page)
|
||||
time.sleep(2)
|
12
test/test_reservation.py
Normal file
12
test/test_reservation.py
Normal file
@ -0,0 +1,12 @@
|
||||
from selenium.webdriver.common.by import By
|
||||
import time
|
||||
|
||||
|
||||
def test_reservation(login):
|
||||
home_page = login
|
||||
home_page.open_session()
|
||||
film_name = home_page.open_film()
|
||||
home_page.click_buy()
|
||||
home_page.click_continue()
|
||||
home_page.make_payment()
|
||||
assert home_page.check_payment_shows() == True
|
@ -1,37 +0,0 @@
|
||||
from common_fixtures import driver, login
|
||||
from selenium.webdriver.common.by import By
|
||||
import time
|
||||
|
||||
|
||||
def test_header_len(driver):
|
||||
header = driver.find_elements(By.CLASS_NAME, 'menu__item')
|
||||
assert len(header) > 0
|
||||
|
||||
|
||||
def test_header_navigation(driver):
|
||||
header = driver.find_elements(By.CLASS_NAME, 'menu__item')
|
||||
is_error = False
|
||||
for menu_item in header:
|
||||
driver.execute_script("arguments[0].scrollIntoView(true);", menu_item)
|
||||
menu_item.click()
|
||||
if not menu_item.is_enabled():
|
||||
is_error = True
|
||||
break
|
||||
assert is_error == False
|
||||
|
||||
|
||||
def test_feedback(login):
|
||||
feedback_button = login.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div/nav/div/div[2]/button")
|
||||
login.execute_script("arguments[0].scrollIntoView(true);", feedback_button)
|
||||
feedback_button.click()
|
||||
time.sleep(2)
|
||||
textarea = login.find_element(By.CLASS_NAME, 'textarea')
|
||||
textarea.send_keys('a')
|
||||
send_button = login.find_element(
|
||||
By.XPATH, '/html/body/div[3]/div/div[2]/div/div/div/div[3]/button')
|
||||
send_button.click()
|
||||
time.sleep(2)
|
||||
success_img = login.find_element(
|
||||
By.XPATH, '/html/body/div[3]/div/div[2]/div/div/div/div[2]/div/img')
|
||||
assert success_img is not None
|
@ -1,157 +0,0 @@
|
||||
from common_fixtures import driver, login, open_profile
|
||||
from selenium.webdriver.common.by import By
|
||||
from my_constants import EMAIL, PASSWORD
|
||||
import time
|
||||
|
||||
|
||||
def switcher(driver, ind):
|
||||
driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div[1]/button[1]/img").click()
|
||||
element = driver.find_element(
|
||||
By.XPATH, f"/html/body/div[2]/nav/a[{ind}]")
|
||||
to_check1 = element.text
|
||||
element.click()
|
||||
time.sleep(2)
|
||||
to_check2 = driver.find_element(
|
||||
By.CLASS_NAME, 'overlay-header__info-text').get_attribute("textContent")
|
||||
res = (to_check1 == to_check2)
|
||||
driver.find_element(
|
||||
By.CSS_SELECTOR, '#root > div > div.app-page > div.auth-popup > div > div.overlay-order.overlay-sidebar-enter-done > div.overlay-header > button.popup-close-icon > svg > path').click()
|
||||
time.sleep(2)
|
||||
return res
|
||||
|
||||
|
||||
def get_password_fields(driver):
|
||||
return [driver.find_element(By.NAME, 'old_password'),
|
||||
driver.find_element(By.NAME, 'password'),
|
||||
driver.find_element(By.NAME, 'repeat_password')]
|
||||
|
||||
|
||||
def password_step(driver):
|
||||
change_password = driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/a[2]")
|
||||
driver.execute_script(
|
||||
"arguments[0].scrollIntoView(true);", change_password)
|
||||
change_password.click()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def password_back_step(driver):
|
||||
driver.find_element(
|
||||
By.CSS_SELECTOR, '#root > div > div.app-page > div.auth-popup > div > div.overlay-order.overlay-sidebar-enter-done > div.overlay-header > div.button-back > svg').click()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def old_new_password(driver):
|
||||
old_password, password, repeat_password = get_password_fields(driver)
|
||||
old_password.send_keys(PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[3]/div[2]/div[2]").is_displayed()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def wrong_repeat_password(driver):
|
||||
old_password, password, repeat_password = get_password_fields(driver)
|
||||
old_password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[4]/div[2]/div[2]").is_displayed()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def wrong_old_password(driver):
|
||||
old_password, password, repeat_password = get_password_fields(driver)
|
||||
old_password.send_keys(2 * PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'a')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'a')
|
||||
time.sleep(1)
|
||||
driver.find_element(By.CLASS_NAME, 'login-form__button').click()
|
||||
time.sleep(1)
|
||||
assert driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[2]/div[2]/div[2]").is_displayed()
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def check_warnings(driver):
|
||||
old_password, password, repeat_password = get_password_fields(driver)
|
||||
old_password.send_keys(PASSWORD)
|
||||
time.sleep(1)
|
||||
password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
repeat_password.send_keys(2 * PASSWORD + 'а')
|
||||
time.sleep(1)
|
||||
assert len(driver.find_elements(
|
||||
By.XPATH, "//div[@class='input__error']")) == 1
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def test_navigation(open_profile):
|
||||
login = open_profile
|
||||
profile_icon_window = login.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div[1]/button[1]/img")
|
||||
login = open_profile
|
||||
menu_len = len(login.find_elements(By.CLASS_NAME, 'account-menu__item'))
|
||||
profile_icon_window.click()
|
||||
time.sleep(2)
|
||||
|
||||
res = True
|
||||
for ind in range(menu_len - 1):
|
||||
res = res and switcher(
|
||||
login, ind + 1)
|
||||
time.sleep(2)
|
||||
login.switch_to.default_content()
|
||||
assert res == True
|
||||
|
||||
|
||||
def test_profile_changes(open_profile):
|
||||
driver = open_profile
|
||||
profile_icon_window = driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div[1]/button[1]/img")
|
||||
time.sleep(2)
|
||||
driver.find_element(By.XPATH, "/html/body/div[2]/nav/a[2]").click()
|
||||
time.sleep(1)
|
||||
fields = []
|
||||
fields.append(driver.find_element(By.NAME, "first_name"))
|
||||
fields.append(driver.find_element(By.NAME, "last_name"))
|
||||
fields.append(driver.find_element(By.NAME, "middle_name"))
|
||||
fields.append(driver.find_element(By.NAME, 'birthdate'))
|
||||
fields.append(driver.find_element(By.NAME, 'phone'))
|
||||
time.sleep(1)
|
||||
for i in range(len(fields)):
|
||||
fields[i].clear()
|
||||
fields[i].send_keys('a')
|
||||
assert driver.find_element(
|
||||
By.XPATH, f"//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/div[{i + 1}]/div[3]").is_displayed()
|
||||
driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/div/form/a[1]").click()
|
||||
time.sleep(1)
|
||||
driver.find_element(
|
||||
By.XPATH, "//*[@id='root']/div/div[1]/div[2]/div/div[2]/div[2]/div/form/div[3]/div[2]/input").send_keys('a')
|
||||
assert driver.find_element(By.CLASS_NAME, 'disabled').is_enabled()
|
||||
driver.find_element(
|
||||
By.CSS_SELECTOR, '#root > div > div.app-page > div.auth-popup > div > div.overlay-order.overlay-sidebar-enter-done > div.overlay-header > div.button-back > svg').click()
|
||||
time.sleep(1)
|
||||
password_step(driver)
|
||||
old_new_password(driver)
|
||||
password_back_step(driver)
|
||||
password_step(driver)
|
||||
wrong_repeat_password(driver)
|
||||
password_back_step(driver)
|
||||
password_step(driver)
|
||||
wrong_old_password(driver)
|
||||
password_back_step(driver)
|
||||
password_step(driver)
|
||||
check_warnings(driver)
|
||||
password_back_step(driver)
|
||||
time.sleep(2)
|
@ -1,21 +0,0 @@
|
||||
from common_fixtures import login, driver
|
||||
from selenium.webdriver.common.by import By
|
||||
import time
|
||||
|
||||
|
||||
def test_reservation(login):
|
||||
driver = login
|
||||
driver.find_element(By.XPATH, "//*[@id='root']/div/div/div/div[2]/div/a[1]/div[2]/div[2]/div/div[1]").click()
|
||||
time.sleep(3)
|
||||
the_iframe = driver.find_element(By.ID, "kw-iframe")
|
||||
driver.switch_to.frame(the_iframe)
|
||||
film_name = driver.find_element(By.CLASS_NAME, 'hall-schema-popup__title').text
|
||||
driver.find_element(By.XPATH, "//*[@id='root']/div/div[1]/div[1]/div/div/div[4]/div[2]/div/div/canvas").click()
|
||||
time.sleep(1)
|
||||
driver.find_element(By.XPATH, "//button[@type='button']").click()
|
||||
time.sleep(1)
|
||||
driver.find_element(By.XPATH, "//button[text()='Продолжить']").click()
|
||||
time.sleep(2)
|
||||
driver.find_element(By.XPATH, "//span[text()='Оплатить через СБП']").click()
|
||||
time.sleep(2)
|
||||
assert driver.find_element(By.XPATH, "//*[text()='Отсканируйте и оплатите в приложении банка.']").is_displayed()
|
Loading…
x
Reference in New Issue
Block a user