def test_account_btn_click(browser): driver = browser MainPage(driver).account_btn_click() if MainPage(driver).is_expanded(): assert True else: assert False
def test_navigate_to_auth_page(browser): driver = browser try: MainPage(driver).account_btn_click() MainPage(driver).login_link_click() if "account/login" in driver.current_url: assert True else: assert False except StaleElementReferenceException: assert False
def load_app(request): from page_objects.main_page import MainPage request.cls.main_app = MainPage() def driver_close(): check_web_driver.close() request.addfinalizer(driver_close)
def _sign_in(self, username: str, password: str) -> MainPage: self._send_keys(self.__EMAIL, username) self._send_keys(self.__PASSWORD, password) self._click_via_script_by(self.__LOGIN_BTN) return MainPage(self._driver)
def load_app(request): if isinstance(request.cls.webdriver, webdriver.Chrome): chrome_options = Options() # chrome_options.add_argument("--headless") prefs = {"profile.default_content_setting_values.notifications": 2} chrome_options.add_experimental_option("prefs", prefs) request.instance.initialized_webdriver = request.cls.webdriver( executable_path=request.cls.webdriver_path, chrome_options=chrome_options) elif isinstance(request.cls.webdriver, webdriver.Firefox): _browser_profile = webdriver.FirefoxProfile() _browser_profile.set_preference("dom.webnotifications.enabled", False) _browser_profile.set_preference("dom.push" ".enabled", False) options = fOptions() # options.set_headless(headless=True) request.instance.initialized_webdriver = request.cls.webdriver( executable_path=request.cls.webdriver_path, firefox_options=options, firefox_profile=_browser_profile) else: request.instance.initialized_webdriver = request.cls.webdriver( executable_path=request.cls.webdriver_path) request.instance.main_page = MainPage( request.instance.initialized_webdriver) def driver_close(): request.instance.initialized_webdriver.quit() request.addfinalizer(driver_close)
def get_main_page(browser): print(f"Browser: {Config.webdrivers[browser].name}") webdriver = Config.webdrivers[browser]( command_executor=Config.grid_address) if "Remote" in Config.webdrivers[ browser].name or "Android" in Config.webdrivers[ browser].name or "IOS" in Config.webdrivers[ browser].name else Config.webdrivers[browser]() return MainPage(webdriver.web_driver)
def test_check_covid_page(browser, load_env): main_url, projects_url, project_blago_url, project_covid_url = load_env ProjectsPage(browser).find_element_and_click( ProjectsLocator.project_covid_link) ProjectCovidPage(browser).check_elements() \ .move_cursor_to_element(ProjectCovidLocator.covid_block) MainPage(browser).open_main_page(main_url)
def __init__(self, driver): self.driver = driver self.login = LoginPage(self) self.main = MainPage(self) self.product = ProductPage(self) self.order = OrderPage(self) self.report = ReportPage(self)
def test_successful_login_clicking_button(self): """ Tests the login functionality of www.hudl.com considering the user clicked on the Login button to perform the action. """ main_page = MainPage(self.driver) self.assertTrue( main_page.is_title_matches(), "The title of the Hudl main page was different from the expected. Found: {}, Expected: {}" .format(self.driver.title, main_page.MAIN_PAGE_TITLE)) # Clicks on the Login button to be redirected to the login page main_page.click_login_button() login_page = LoginPage(self.driver) self.assertTrue( login_page.is_title_matches(), "The title of the Hudl login page was different from the expected. Found: {}, Expected: {}" .format(self.driver.title, login_page.LOGIN_PAGE_TITLE)) # Sets the text of the email input to the user's email login_page.email_text_element = login_data.VALID_EMAIL # Sets the text of the password input to the user's password login_page.pwd_text_element = login_data.VALID_PASSWORD login_page.click_login_button() logged_in_page = LoggedInPage(self.driver) # Verifies if the user menu is visible self.assertTrue( logged_in_page.is_logged_in(), "The user wasn't logged in after clicking the Login button.") # Verifies if the display name present on the user menu matches the expected self.assertTrue( logged_in_page.is_display_name_matches(), "The display name don't match the expected. Found: {}, Expected: {}" .format(logged_in_page.display_name_text_element, login_data.DISPLAY_NAME)) print("\nSuccessfully logged in as {}!".format( logged_in_page.display_name_text_element))
class OxwallSite: def __init__(self, driver): self.driver = driver self.main_page = MainPage(self.driver) self.dash_page = DashboardPage(self.driver) self.sign_in_page = SignInPage(driver) @allure.step("WHEN I logged in like {user}") def login_as(self, user): self.main_page.sign_in_click() self.sign_in_page.username_field.input(user.username) self.sign_in_page.password_field.input(user.password) self.sign_in_page.submit_form() @allure.step("WHEN I logged out") def logout(self): self.dash_page.sign_out()
def load_app(request): request.cls.initialized_webdriver = request.cls.webdriver(executable_path=request.cls.webdriver_path) request.cls.main_page = MainPage(request.cls.initialized_webdriver) def driver_close(): request.cls.initialized_webdriver.quit() request.addfinalizer(driver_close)
def test_open_main_page_go_to_projects(browser, load_env): main_url, projects_url, project_blago_url, project_covid_url = load_env MainPage(browser) \ .open_main_page(main_url) \ .click_projects_link() assert projects_url == browser.current_url # можно добавить проверики здесь, если позволяет стиль написания кода print(browser.current_url)
def test_user_login(browser): driver = browser url = "http://localhost/index.php?route=account/login" with allure.step(f'navigate to user login page'): MainPage(driver).goto_login(url) try: with allure.step(f'input username'): MainPage(driver).login(email='*****@*****.**') with allure.step(f'input password'): MainPage(driver).passwd(pwd='password') with allure.step(f'login'): MainPage(driver).login_btn_click() with allure.step(f'Проверка Title на соответствие'): if driver.title == "My Account": assert True else: assert False except NoSuchElementException: assert False
def find_work(self): """ 1. Проверяем отображение элементов на главной странице 'hh.ru' 2. Вводим текст в поле 'Профессия, должность или компания' 3. Нажимаем кнопку 'Найти работу' 4. Проверяем переход на страницу результата поиска """ main_page = MainPage(self.driver, self.url) vacancy_page = SearchVacancyPage(self.driver) main_page.verify_main_page() main_page.input_work("python") main_page.click_find_job() vacancy_page.verify_search_vacancy_page()
def __init__(self, driver): # Open Oxwall site self.driver = driver self.main_page = MainPage(self.driver) self.dash_page = DashboardPage(self.driver) self.sign_in_page = SignInPage(driver) # Now these actions are in Page Objects. # TODO: clean all this old code, and use new approach in all parts of project self.wait = WebDriverWait(self.driver, 10) self.actions = ActionChains(self.driver)
def test_unsuccessful_login_invalid_password(self): """ Tests the login functionality of www.hudl.com considering the user pressed the enter key to perform the action. """ main_page = MainPage(self.driver) self.assertTrue( main_page.is_title_matches(), "The title of the Hudl main page was different from the expected. Found: {}, Expected: {}" .format(self.driver.title, main_page.MAIN_PAGE_TITLE)) # Clicks on the Login button to be redirected to the login page main_page.click_login_button() login_page = LoginPage(self.driver) self.assertTrue( login_page.is_title_matches(), "The title of the Hudl login page was different from the expected. Found: {}, Expected: {}" .format(self.driver.title, login_page.LOGIN_PAGE_TITLE)) # Sets the text of the email input to the user's email login_page.email_text_element = login_data.VALID_EMAIL # Sets the text of the password input to the user's password login_page.pwd_text_element = login_data.INVALID_PASSWORD login_page.click_login_button() # Verifies if the error container is visible self.assertTrue( login_page.is_error_container_visible(), "No error message was shown when trying to login with " "empty credential fields.") # Verify if the visible error message matches the expected self.assertTrue( login_page.is_error_message_matches(), "The error message displayed to the user was different " "from the expected.")
def __init__(self, driver): # Open Oxwall site self.driver = driver self.driver.get('http://127.0.0.1/oxwall/') self.main_page = MainPage(self.driver) self.dash_page = DashboardPage(self.driver) self.sign_in_page = SignInPage(driver) self.wait = WebDriverWait(self.driver, 10) self.actions = ActionChains(self.driver) self.join_page = JoinPage(self.driver)
def test_search_product(browser): """ Проверка поиск товара на странице :param browser: """ main_page = MainPage(browser.wd) search_page = SearchPage(browser.wd) # Открывам главную страницу: browser.open_main_page() # Очищаем поле ввода и вводим интересующий нас товар: main_page.search('Canon EOS 5D') search_query = search_page.get_search_query_text() search_product = search_page.get_search_product_text() # Проверяем, что был поиск по интересующему нас товару: assert search_query == 'Search - Canon EOS 5D' # Проверям, что в результатах поиска есть интересующий нас товар: assert search_product == 'Canon EOS 5D'
def test_unsuccessful_login_empty_fields(self): """ Tests the login functionality of www.hudl.com considering the user try to login with empty fields. """ main_page = MainPage(self.driver) self.assertTrue( main_page.is_title_matches(), "The title of the Hudl main page was different from the expected. Found: {}, Expected: {}" .format(self.driver.title, main_page.MAIN_PAGE_TITLE)) # Clicks on the Login button to be redirected to the login page main_page.click_login_button() login_page = LoginPage(self.driver) self.assertTrue( login_page.is_title_matches(), "The title of the Hudl login page was different from the expected. " "Found: {}, Expected: {}".format(self.driver.title, login_page.LOGIN_PAGE_TITLE)) login_page.clear_credential_fields() login_page.click_login_button() # Verifies if the error container is visible self.assertTrue( login_page.is_error_container_visible(), "No error message was shown when trying to login with " "empty credential fields.") # Verify if the visible error message matches the expected self.assertTrue( login_page.is_error_message_matches(), "The error message displayed to the user was different " "from the expected.")
def setUp(self): self.driver = webdriver.Firefox(executable_path=geckodriver_path) # desired_cap = browser_config['ff_44_osx_hs'] # self.driver = webdriver.Remote( # command_executor='http://' + USERNAME + ':' + ACCESS_KEY + '@hub.browserstack.com:80/wd/hub', # desired_capabilities=desired_cap) # open page self.driver.get(base_url) if "Google" not in self.driver.title: raise Exception("Unable to load google page!") self.main_page = MainPage(self.driver) self.search_result_page = SearchResultsPage(self.driver)
def test_next_banner(browser, banner): """ Проверка переключения баннера :param browser: :param banner: :return: """ main_page = MainPage(browser.wd) # Открываем главную страницу: browser.open_main_page() # Переключаем на следующий баннер: main_page.switch_next_banner() # Проверяем текущий баннер: main_page.check_banner_is_present(banner)
def test_guest_should_see_login_link(browser): link = "http://selenium1py.pythonanywhere.com/" page = MainPage(browser, link) page.open() page.should_be_login_link()
def click_to_join(self): self.find_visible_element(SignInLocators.JOIN_LINK).click() def submit_form(self): self.sign_in_button.click() self.wait.until( invisibility_of_element_located(SignInLocators.LOGIN_BACKGROUND), "DashPage doesn't appear") # return DashboardPage(self.driver) if __name__ == "__main__": from selenium import webdriver driver = webdriver.Chrome() driver.get("http://127.0.0.1/oxwall") from page_objects.main_page import MainPage main_page = MainPage(driver) main_page.sign_in_menu.click() sign_in_page = SignInPage(driver) # 1st type of using: sign_in_page.username_field.clear() sign_in_page.username_field.send_keys("something") sign_in_page.password_field.clear() sign_in_page.password_field.send_keys("some_pass") sign_in_page.sign_in_button.click() # 2nd type of using: sign_in_page.input_username("something") sign_in_page.input_password("some_pass") sign_in_page.submit_form()
def test_guest_can_open_login_page_from_main_page(self, browser): page = MainPage(browser) page.open() page.go_to_login_or_register_page() page = LoginPage(browser) page.is_page_registration_login_page()
def test_can_change_language_from_main_page(self, browser, language): mp = MainPage(browser) mp.open() mp.change_language(language) mp.is_language_changed(language)
def __init__(self, driver): self.driver = driver self.main_page = MainPage(self.driver) self.dash_page = DashboardPage(self.driver) self.sign_in_page = SignInPage(driver)
def test_test_run(driver_session): autoria_page = MainPage(driver_session) autoria_page.open_page_and_wait() autoria_page.get_used_field().click() brand_field = autoria_page.get_brand_field() autoria_page.clear_and_enter_text(brand_field, "Kia") brand_field.send_keys(Keys.ENTER) autoria_page.select_option_value("Kia") mark_field = autoria_page.get_mark_field() autoria_page.clear_and_enter_text(mark_field, "Sportage") mark_field.send_keys(Keys.ENTER) autoria_page.select_option_value("Sportage") autoria_page.get_year_from().click() autoria_page.select_year('from', '2015') autoria_page.get_year_to().click() autoria_page.select_year('to', '2015') autoria_page.click_search_butn() autoria_page.wait_page_ready()
def test_calendar(browser): MainPage(browser).find_element(MainLocator.calendar) MainPage(browser).move_cursor_to_element(MainLocator.calendar)
def __init__(self, driver): self.driver = driver self.main = MainPage(self) self.product = ProductPage(self) self.cart = CartPage(self)
def test_guest_can_go_to_login_page(browser): link = "http://selenium1py.pythonanywhere.com/" page = MainPage(browser, link) page.open() page.go_to_login_page()