187 lines
7.3 KiB
Python
187 lines
7.3 KiB
Python
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() |