def setup(self, variables): while (True): try: with allure.step('前置作業-會員登入'): pass login = LoginPage().open_login_page() main_page = login.login_as( variables['user'], variables['password']).than_at_main_page() main_page.logontext.should(be.visible) break except: continue
def login(self, email=Config.api_first_login, password=Config.api_password): login_page = LoginPage(self.driver) login_page.specify_email(email) login_page.specify_pass(password) login_page.press_login()
class TestLogin: def setup_method(self): self.driver = webdriver.Chrome( executable_path=ChromeDriverManager().install()) self.login_page = LoginPage(self.driver) self.header_page = HeaderPage(self.driver) def test_login_to_jira_page_object(self): self.login_page.open() assert self.login_page.at_page() self.login_page.login_to_jira() assert self.header_page.at_page() def teardown_method(self): self.driver.close()
def test_something(self, userlogin, password): start = StartPage(self.driver) start.singInButton_click() login = LoginPage(self.driver) login.emailInput(userlogin) login.passwordInput(password) login.clickSihgInButton()
def test_change_assigner_for_the_ticket(self, browser): self.login_page = LoginPage(browser) self.login_page.open( "http://jira.hillel.it:8080/secure/Dashboard.jspa") self.login_page.login_to_jira_enter_username("webinar5") self.login_page.login_to_jira_enter_password("webinar5") self.login_page.click_login_button_at_main_page() self.main_page = MainPage(browser) self.main_page.click_the_first_ticket_assigned_to_me() self.issue_details_page = IssueDetailsPage(browser) self.issue_details_page.click_issue_reporter_field() self.issue_details_page.enter_new_reporter("Artur Piluck") assert self.issue_details_page.should_be_new_assigner("Artur Piluck") self.issue_details_page.refresh_the_page() assert self.issue_details_page.should_be_new_assigner("Artur Piluck")
def test_web_ui_23_check_change_pass_page_cancel_link(self, browser): change_pass_page = ChangePassPage(browser) change_pass_page.open() with wait_for_page_to_reload(browser): change_pass_page.click_remember_btn() assert_that(browser.current_url, contains_string(LoginPage(browser).path), 'Страница "Авторизация" не открылась')
def test_web_ui_24_change_pass_page_success_change(self, browser): change_pass_page = ChangePassPage(browser) change_pass_page.open() with wait_for_page_to_reload(browser): change_pass_page.enter_new_password(phone=str(random.randint(9900000000, 9909999999))) assert_that(browser.current_url, contains_string(LoginPage(browser).path), 'Страница "Авторизация" не открылась')
def setup_class(cls): cls.data = merge_configs('~/testrail.json', '../config/data.json') cls.client = APIClient(cls.data) cls.projects_created = [] options = DriverOptions() try: browserName = pytest.config.getoption('browser') if pytest.config.getoption('headless', default=None) is not None: options.attrs['headless'] = True except AttributeError: browserName = 'firefox' # Prepare browser cls.driver = driver_manager.get_driver( browserName=DriverType.get_driver_type(browserName), options=options, capabilities=None, commandExecutor=None) driver_manager.start_service(cls.driver, cls.data.server_name) cls.prepare_data = PrepareData(cls.driver) cls.login = LoginPage(cls.driver) cls.api = APIPage() cls.check_api_enabled() # add project project = Project(name="API Test Project", announcement="Some announcement", show_announcement=False, suite_mode=cls.suite_mode) project_created = cls.client.add_project(project) cls.projects_created.append(project_created) cls.project = project_created
def __init__(self, driver=None): self.driver = driver self.project = ProjectPage(driver) self.users_roles = UsersRolesPage(driver) self.suite = SuitePage(driver) self.section = SectionsPage(driver) self.tests = TestCasesPage(driver) self.run = RunsPage(driver) self.plan = PlansPage(driver) self.cases = CasesPage(driver) self.integration = IntegrationPage(self.driver) self.login = LoginPage(self.driver) self.site_settings_page = SiteSettingsPage(driver) self.t = read_config('../config/tests.json') self.data = merge_configs('~/testrail.json', '../config/data.json') self.p = read_config('../config/project.json') self.runs = read_config('../config/runs.json') self.users = read_config('../config/users.json') self.plans = read_config('../config/plans.json') self.site_settings = read_config('../config/site_settings.json') self.plugin = read_config("../config/plugin.json") self.sso_settings = read_config('../config/sso_settings.json') self.users_overview_url = self.data.server_name + self.users.overview_url
class TestJiraLoginUI: @pytest.mark.smoke def test_login_to_jira(self, browser): self.login_page = LoginPage(browser) self.login_page.open("http://jira.hillel.it:8080/secure/Dashboard.jspa") assert self.login_page.at_page() self.login_page.login_to_jira_enter_username("webinar5") self.login_page.login_to_jira_enter_password("webinar5") self.login_page.click_login_button_at_main_page() self.main_page = MainPage(browser) self.main_page.is_assigned_to_me_section() assert self.main_page.is_assigned_to_me_section()
class TestLogin: @pytest.mark.parametrize("login, passwd, rez", [ ("admin", "changeme", "please try again."), ("admin", "wrongPass", "please try again"), ("wrongLogin", "changeme", "System Dashboard"), ] ) def test_login_to_jira_page_object(self, login, passwd, rez): self.login_page = LoginPage(self.driver) self.header_page = HeaderPage(self.driver) self.login_page.open() assert self.login_page.at_page() self.login_page.enter_name(login) self.login_page.enter_password(passwd) self.login_page.click_login_button() assert self.login_page.wait_for_text_to_appear(rez)
def test_create_issue_in_jira(self, browser): self.login_page = LoginPage(browser) self.login_page.open( "http://jira.hillel.it:8080/secure/Dashboard.jspa") assert self.login_page.at_page() self.login_page.login_to_jira_enter_username("webinar5") self.login_page.login_to_jira_enter_password("webinar5") self.login_page.click_login_button_at_main_page() self.main_page = MainPage(browser) assert self.main_page.is_assigned_to_me_section() self.main_page.click_create_issue_button() self.create_issue_page = CreateIssue(browser) self.create_issue_page.should_have_title("Create Issue") self.create_issue_page.choose_the_project("Webinar (WEBINAR)") self.create_issue_page.enter_summary_field("UI bug In Jira") self.create_issue_page.enter_reporter("webinar5") self.create_issue_page.click_create_issue_button_at_details_page() assert "Issue" in self.create_issue_page.is_alert_present()
class BaseTest: driver = None def setup_class(self): self.driver = webdriver.Chrome( executable_path=ChromeDriverManager().install()) self.login_page = LoginPage(self.driver) self.login_page.open_page() self.dashboard_page = DashboardPage(self.driver) self.login_page.login_to_jira(ValidUser.username, ValidUser.password) assert self.dashboard_page.at_page() self.create_issue_page = CreateIssuePage(self.driver) def teardown_class(self): self.driver.close() def log_full(r): req = r.request """ At this point it is completely built and ready to be fired; it is "prepared". However pay attention at the formatting used in this function because it is programmed to be pretty printed and may differ from the actual request. """ print() print('{}\n{}\n{}\n\n{}'.format( '-----------REQUEST-----------', req.method + ' ' + req.url, '\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()), req.body, )) print() print('{}\n{}\n{}\n\n{}'.format( '-----------RESPONSE-----------', r.status_code, '\n'.join('{}: {}'.format(k, v) for k, v in r.headers.items()), r.text, )) print()
def test_create_reward(browser): """ GIVEN user wants to login to reward page as reward admin WHEN user keys in correct email address and password THEN user is logged in as reward admin AND reward admin can create reward """ login_page = LoginPage(browser) login_page.login(email="*****@*****.**", password="******") reward_admin_page = RewardAdminPage(browser) reward_admin_page.start() result = reward_admin_page.create_new_reward() assert reward_admin_page.get_xpath( RewardAdminPage.REWARD_FORM_STATUS).get_attribute( 'textContent') == "ACTIVE"
def test_login(self): start = StartPage(self.driver) start.singInButton_click() login = LoginPage(self.driver) login.emailInput('*****@*****.**') login.passwordInput('12345+') login.clickSihgInButton() self.account = AccountPage(self.driver) self.account._validate_page(self.driver) self.account.order_history().click()
def test_02(self): u'''密码登录测试''' self.login_page = LoginPage(self.driver) self.login_page.open_login_page() self.login_page.choose_tab_password() self.login_page.input_username(self.username) self.login_page.input_password(self.password) self.login_page.click_btn_login_pwd() # 等待时间后续优化 sleep(3) user_id = self.login_page.show_user_id() # 判断登录是否成功 self.assertEqual(user_id, self.expect_user_id, msg='登录失败') self.login_page.click_btn_logout() sleep(3) # 登出后,"退出登录"变为"立即登录" text_change = self.login_page.show_text_change() # 判断登出是否成功 self.assertEqual(text_change, "立即登录", msg="登出失败")
def setup_class(cls): super().setup_class() cls.attachments = read_config('../config/attachments.json') cls.users = read_config('../config/users.json') cls.client = APIClient(cls.data) cls.attachments_page = APIPage() cls.users_roles_page = UsersRolesPage(cls.driver) cls.login_page = LoginPage(cls.driver) cls.prepare_test_case()
def test_login_incorrect_password(self, browser): login_page = LoginPage(browser) with allure.step("Open login page"): login_page.open() with allure.step("Check that login page opened"): assert login_page.at_page() with allure.step("Call login method"): login_page.login(login, "wrong") with allure.step("Check that correct error is displayed"): assert login_page.username_error_text("Sorry, your username and password are incorrect") allure.attach(browser.get_screenshot_as_png(), name="test_login_incorrect_password", attachment_type=allure.attachment_type.PNG)
def test_user_can_not_login_with_empty_verifySN(self, variables): user = variables['user'] password = variables['password'] with allure.step("輸入帳號密碼"): allure.attach('帳號', 'eitctest001') allure.attach('密碼', 'abc12345') LoginPage()\ .open_login_page()\ .login_with_invalid_verifySN(user, password, "")\ .than()\ .validationErr\ .should(have.exact_text("必須填寫驗證碼"))
def test_admin_user_login(browser): """ GIVEN user is asked to login via dashbord WHEN user login as admin user THEN perx main page with all functions in side bar is displayed """ login_page = LoginPage(browser) login_page.start() login_page.login(email="*****@*****.**", password="******") admin_page = AdminPage(browser) admin_page.start() # Check that admin has sufficient right to access all functionality assert admin_page.get_side_bar_menu_item( AdminPage.REPORTS_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.REWARDS_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.CAMPAIGNS_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.LOYALTIES_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.TRANSACTION_RULES_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.MERCHANTS_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.CUSTOMER_MANAGEMENT_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.SETTINGS_MENU_ITEM).size != 0 assert admin_page.get_side_bar_menu_item( AdminPage.BUSINESS_INTELLIGENCE_MENU_ITEM).size != 0
def test_reward_user_login(browser): """ GIVEN user is asked to login via dashbord WHEN user login as reward user THEN perx main page with ONLY reward priviledge is displayed """ login_page = LoginPage(browser) login_page.start() login_page.login(email="*****@*****.**", password="******") reward_admin_page = RewardAdminPage(browser) reward_admin_page.start() # Check that reward_admin has can only have priviledge to create reward assert reward_admin_page.get_side_bar_menu_item( RewardAdminPage.REWARDS_MENU_ITEM).size != 0 # Check that rest of the menu_item element that can be found in admin page cannot be found in # reward admin page with pytest.raises(NoSuchElementException): reward_admin_page.get_side_bar_menu_item(AdminPage.REPORTS_MENU_ITEM) reward_admin_page.get_side_bar_menu_item(AdminPage.CAMPAIGNS_MENU_ITEM) reward_admin_page.get_side_bar_menu_item(AdminPage.LOYALTIES_MENU_ITEM) reward_admin_page.get_side_bar_menu_item( AdminPage.TRANSACTION_RULES_MENU_ITEM) reward_admin_page.get_side_bar_menu_item(AdminPage.MERCHANTS_MENU_ITEM) reward_admin_page.get_side_bar_menu_item( AdminPage.CUSTOMER_MANAGEMENT_MENU_ITEM) reward_admin_page.get_side_bar_menu_item(AdminPage.SETTINGS_MENU_ITEM) reward_admin_page.get_side_bar_menu_item( AdminPage.BUSINESS_INTELLIGENCE_MENU_ITEM)
def test_web_ui_13_check_auth_page_change_pass_link(self, browser): auth_page = LoginPage(browser) auth_page.open() with wait_for_page_to_reload(browser): auth_page.click_forget_pass_btn() assert_that(browser.current_url, contains_string(ChangePassPage(browser).path), 'Страница "Новый пароль" не открылась')
def login_to_jira(request, browser): from src.pages.login_page import LoginPage from src.pages.main_page import MainPage login_page = LoginPage(browser) main_page = MainPage(browser) with allure.step("Open login page"): login_page.open() with allure.step("Login to JIRA"): login_page.login(login, password) def take_screenshot(): with allure.step("Taking screenshot"): browser.execute_script("document.body.bgColor = 'white';") allure.attach(browser.get_screenshot_as_png(), name=request.function.__name__, attachment_type=allure.attachment_type.PNG) request.addfinalizer(take_screenshot) with allure.step("Wait until main page is loaded"): main_page.wait_until_loaded() yield main_page with allure.step("Logout from JIRA"): main_page.logout()
def test_01(self): u'''手机号快捷登录测试''' self.login_page = LoginPage(self.driver) self.login_page.open_login_page() self.login_page.input_phone(self.username) self.login_page.get_verify_code() sleep(1) db = DatabaseOperation() verfy_code = db.get_data(self.key, self.sql) self.login_page.input_verify_code('%s' % verfy_code) self.login_page.click_btn_login() # 等待时间后续优化 sleep(3) user_id = self.login_page.show_user_id() # 判断登录是否成功 self.assertEqual(user_id, self.expect_user_id, msg='登录失败') self.login_page.click_btn_logout() sleep(3) # 登出后,"退出登录"变为"立即登录" text_change = self.login_page.show_text_change() # 判断登出是否成功 self.assertEqual(text_change, "立即登录", msg="登出失败")
def test_login_wrong_password(driver_setup): with pytest.allure.step("Navigate to login screen"): driver_setup.get(config.get('JIRA', 'jira.url.ui.login')) with pytest.allure.step("Fill in wrong password and click 'login' button"): login_page = LoginPage(driver_setup) login_page.set_user_name(config.get('JIRA', 'jira.user')) login_page.set_password('wrong_password') login_page.click_login_button() allure.attach(driver_setup.get_screenshot_as_png(), name='wrong_password_login', attachment_type=AttachmentType.PNG) with pytest.allure.step( "Verify if user is still at login page after failed login"): assert driver_setup.current_url == config.get('JIRA', 'jira.url.ui.login'),\ 'Actual url {} is different from Expected {}'.format( driver_setup.current_url, config.get('JIRA', 'jira.url.ui.login') ) with pytest.allure.step("Verify if login error message is correct"): assert expected_login_error in login_page.get_error_text(), \ 'Actual error {} is different from Expected {}'.format(login_page.get_error_text(), expected_login_error)
def test_web_ui_10_check_auth_page_authorization(self, browser): auth_page = LoginPage(browser) auth_page.open() auth_page.log_in(browser=browser, login=UserData.trial_tariff.value.login, password=UserData.trial_tariff.value.password) assert_that(browser.current_url, contains_string(LKPage(browser).path), 'Страница "Личный кабинет" не открылась')
def test_user_can_login_and_logout(self, variables): user = variables['user'] password = variables['password'] with allure.step('開啟登入頁'): pass login = LoginPage().open_login_page() with allure.step("輸入帳號、密碼,點擊登入Btn"): allure.attach('帳號', user) allure.attach('密碼', password) main_page = login.login_as(user, password).than_at_main_page() with allure.step("首頁的登入text必須visible,「xxx 您好」"): pass main_page.logontext.should(be.visible) with allure.step("關閉CrazyAD"): pass main_page.close_crazy_banner() with allure.step("點擊登出Btn"): pass main_page.logoutbtn.should(be.clickable) main_page.log_out() with allure.step("成功登出,登入Btn可點擊"): pass main_page.loginbtn.should(be.clickable)
def test_login_positive_case(driver_setup): with pytest.allure.step("Navigate to login screen"): driver_setup.get(config.get('JIRA', 'jira.url.ui.login')) with pytest.allure.step( "Fill in valid credentials and click 'login' button"): login_page = LoginPage(driver_setup) login_page.set_user_name(config.get('JIRA', 'jira.user')) login_page.set_password(config.get('JIRA', 'jira.password')) login_page.click_login_button() allure.attach(driver_setup.get_screenshot_as_png(), name='valid_credentials_login', attachment_type=AttachmentType.PNG) with pytest.allure.step( "Verify if user was navigated to dashboard page after successful login" ): assert driver_setup.current_url == config.get('JIRA', 'jira.url.ui.dashboard'),\ 'Actual url {} is different from Expected {}'.format( driver_setup.current_url, config.get('JIRA', 'jira.url.ui.dashboard') )
def setup_class(cls): super().setup_class() # Get test data cls.sso_settings = read_config('../config/sso_settings.json') cls.user = read_config('../config/users.json') cls.auditing = read_config('../config/auditing.json') # Prepare page objects cls.site_settings_url = cls.data.server_name + cls.sso_settings.site_settings_url cls.license_url = cls.data.server_name + cls.auditing.license_url cls.user_overview_url = cls.data.server_name + cls.user.overview_url cls.site_settings = SiteSettingsPage(cls.driver) cls.login = LoginPage(cls.driver) cls.project = ProjectPage(cls.driver) cls.users_roles = UsersRolesPage(cls.driver) cls.setup_database(cls.auditing) cls.login_as_admin(cls) cls.prepare_regular_user(cls)
def setup_class(cls): # Get test data cls.data = merge_configs('~/testrail.json', '../config/data.json') # capabilities = read_config('../config/defaultCapabilities.json') options = DriverOptions() try: # pytest.config is an AttributeError if called outside a test run, e.g. from the interactive interpreter browserName = pytest.config.getoption('browser') # gridURL = pytest.config.getoption('gridurl') if pytest.config.getoption('headless', default=None) is not None: options.attrs['headless'] = True except AttributeError: browserName = 'firefox' # Prepare browser cls.driver = driver_manager.get_driver( browserName=DriverType.get_driver_type(browserName), options=options, capabilities=None, commandExecutor=None) driver_manager.start_service(cls.driver, cls.data.server_name) cls.login = LoginPage(cls.driver)