def script_click_view(context): """Добавляет скрипт на страницу, который показывает место клика""" try: browser.driver().execute_script(CLICK_VIEW) except Exception: warn('Не удалось выполнить скрипт отображения места клика.', stacklevel=2)
def collect_repos(): logging.info("start collecting repo urls ...") urls = {} page.projects_button.should(be.clickable).click() projects_url = browser.driver().current_url time.sleep(10) for project in page.projects: # form project dir name project_dir = project.get_attribute("href").split("/")[-1].lower() urls[project_dir] = [] project.click() repos_url = browser.driver().current_url time.sleep(10) for repo in page.repos: repo.click() page.clone_button.click() url = page.actual_href_element.should( be.visible).get_attribute("value") urls[project_dir].append(url) logging.info(f"repo url: '{url}' has been collected ...") browser.open_url(repos_url) browser.open_url(projects_url) logging.info("repo collecting has been finished.") return urls
def use_forgot_password_link(self, mail, subject_email): link = search_email_imap(mail, subject_email, get_for_forgot_password_link, unquote=False).link browser.driver().get(link) return link
def step_impl(context): """Проверяет, что все предметы стартрэк""" selectors_statTrack = len(browser.driver().find_elements_by_css_selector( '.items [cc="item"] .st')) selectors_all_item = len( browser.driver().find_elements_by_css_selector('.items [cc="item"]')) assert selectors_all_item == selectors_statTrack, 'Фильтр по статтрэку отработал некорректно %s != %s' % ( selectors_all_item, selectors_statTrack)
def step_impl(context): """Проверяет, что все товары в листинге имеют стикеры""" selectors_stickers = len(browser.driver().find_elements_by_css_selector( '.items [cc="item"] .s')) selectors_all_item = len( browser.driver().find_elements_by_css_selector('.items [cc="item"]')) assert selectors_stickers == selectors_all_item, 'Фильтр по стикерам отработал некорректно %s != %s' % ( selectors_stickers, selectors_all_item)
def additional_tab(): def switch(num=0): browser.driver().switch_to.window(browser.driver().window_handles[num]) browser.driver().execute_script("window.open('');") switch(1) browser.open_url(CURRENT_SPRINT) switch(0) yield switch
def screenshot(self, url, file_name): print("Capturing", url, "screenshot as", file_name, "...") print("before opening") browser.open_url(url) print("after opening") browser.driver().set_window_size(1024, 768) print("SAVING HERE:", os.path.join(os.path.dirname(os.path.realpath(__file__)), 'screenshots', file_name)) browser.driver().get_screenshot_as_file( os.path.join(os.path.dirname(os.path.realpath(__file__)), 'screenshots', file_name)) print("Done.")
def setup_function(request): print("\n >>> Before Function") if rerun_controller.is_test_listened(request.node): rerun_controller.add_run() yield if rerun_controller.is_test_listened(request.node): if request.node.rep_call.passed: rerun_controller.reset_runs() browser.driver().delete_all_cookies() print("\n >>> After Function")
def register(auth=PageAuth()): email = get_random_email() password = get_random_low_string() try: customer = auth.register(email, password) yield {'first_name': customer['first_name'], 'last_name': customer['last_name']} except Exception as e: print(e) finally: driver().quit()
def test_can_scroll_to_via_js(): browser.open_url(start_page) logging.warning(browser.driver().current_url) browser.driver().set_window_size(300, 400) link = s("#invisible_link") # browser.driver().execute_script("arguments[0].scrollIntoView();", link) # - this code does not work because SeleneElement is not JSON serializable, and I don't know the way to fix it # - because all available in python options needs a change to json.dumps call - adding a second parameter to it # and specify a custom encoder, but we can't change this call inside selenium webdriver implementation browser.driver().execute_script("arguments[0].scrollIntoView();", link.get_actual_webelement()) link.click()
def add_choice(): # re-write this code using selene.elements __work_area.should(be.visible) element(by_css(".loading-bar")).should_not(be.visible) chain = ActionChains(browser.driver()) chain.click_and_hold(__choice_interaction_btn).move_to_element(__work_area).perform() chain.release().perform()
def pytest_exception_interact(node, call, report): driver = node.instance.driver allure.attach( name='Скриншот', body=browser.driver().get_screenshot_as_png(), attachment_type=allure.attachment_type.PNG, )
class Test_Simple: driver = browser.driver() def setup(m): print('\n ****************** START TEST CASE ************** \n') def teardown(m): print('\n ****************** END TEST KEYS ***************** \n') @allure.step("Test case 1") @allure.testcase("http://my.tms.org/TESTCASE-1") @allure.severity(allure.severity_level.BLOCKER) def test_simple(self): print('test 1 ') open_browser() @allure.step("Test case 2") @allure.testcase("http://my.tms.org/TESTCASE-2") @allure.severity(allure.severity_level.CRITICAL) def test_simple_1(self): print('test 2 ') open_browser() @allure.step("Test case 3") @allure.testcase("http://my.tms.org/TESTCASE-3") @allure.severity(allure.severity_level.NORMAL) def test_simple_2(self): open_browser() print('test 3 ') print(browser.driver().title) s('error').click()
def test_able_to_authorize_session(self, additional_tab, one_proctor, one_testtaker, one_delivery): # Try to start test as TestTaker login_page.make_login(one_testtaker.label, one_testtaker.password) test_passing_page.select_delivery_for_passing(one_delivery) assert test_passing_page.get_delivery_popup_message( one_delivery) == "Please wait, authorization in process ..." # Authorize test as Proctor additional_tab(1) login_page.make_login(one_proctor.label, one_proctor.password) test_passing_page.open_delivery_monitor(one_delivery) test_passing_page.authorize_delivery(one_delivery) assert test_passing_page.get_delivery_status(one_delivery) == "Authorized but not started" # Check that test authorized additional_tab(0) browser.driver().refresh() login_page.make_login(one_testtaker.label, one_testtaker.password) assert test_passing_page.get_delivery_popup_message(one_delivery) == "Authorized, you may proceed"
def step_impl(context): """Активирует чек бокс про-версия""" context.pro_version = s(".trade_container.wrapper").get_attribute( 'version') actions = ActionChains(browser.driver()) actions.click( s(".filter_mobile_container .filter_checkbox_switch [name='proVersion']" )).perform() sleep(2)
def before_all(context): if os.environ.get('DOCKER') == "true": browser.set_driver( webdriver.Remote( command_executor='http://selenoid:4444/wd/hub', desired_capabilities={ "browserName": "chrome", "version": "latest", 'chromeOptions': { 'args': [ '--no-sandbox', '--start-maximized', '--disable-infobars', '--disable-extensions' ], 'prefs': { "download.default_directory": "/tmp/downloads", "download.prompt_for_download": False, 'profile.default_content_setting_values.automatic_downloads': 1 } }, 'enableVNC': True, 'screenResolution': '1920x1080x24' })) browser.driver().set_window_size(1920, 1080) context.session_id = browser.driver().session_id elif os.environ.get('DOCKER') == "false": chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--window-size=1420,1080') chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') browser.set_driver(webdriver.Chrome(chrome_options=chrome_options)) else: if os.environ.get('BROWSER', 'chrome') == "chrome": chromedriver = ChromeDriverManager().install() browser.set_driver( webdriver.Chrome(executable_path=chromedriver, chrome_options=capabilities(context))) context.session_id = browser.driver().session_id
def browser_sign_in() -> str: browser.open_url("https://leetcode.com/accounts/login/") s('[name="login"]').set(LEETCODE_EMAIL.get()) s('[name="password"]').set(LEETCODE_PASSWORD.get()) s("#initial-loading").should_not(be.visible) s("#signin_btn").should(be.visible).click() s(".storyboard").should(be.visible) leetcode_session = driver().get_cookie("LEETCODE_SESSION") if leetcode_session is None: raise ValueError return leetcode_session["value"]
def move_to_element(element): # if the page is scrolled down we move to element without any action action = ActionChains(browser.driver()) action.move_to_element(element) action.perform()
def step_impl(context): """Удаляет cookies браузера""" browser.driver().delete_all_cookies() browser.driver().execute_script('window.localStorage.clear();')
def step_impl(context): """Переключает на последнюю вкладку браузера""" tab_list = browser.driver().window_handles browser.driver().switch_to.window(tab_list[len(tab_list) - 1])
def execute_js(js_string): return driver().execute_script(js_string)
def given_at_other_page(): if not satisfied(s("#order_details"), visible): driver().get('file://' + os.path.abspath(os.path.dirname(__file__)) + '/../resources/orderapp/order.html')
def open_todomvc(): # todo: refactor to use repo copy of todomvc driver().get(TODOMVC_URL) WebDriverWait(driver(), config.timeout).until( element_to_be_clickable((By.CSS_SELECTOR, "#new-todo")))
def teardown_module(m): browser.driver().quit()
def teardown_function(m): driver().quit() config.app_host = ''
def get_current_url(): return driver().current_url
def step_impl(context, value): """Активирует чек бокс стикеры/стартрэк зависит от {value}""" actions = ActionChains(browser.driver()) actions.click( s('.filter_mobile_container .filter_checkbox_switch [name="%s"]' % value)).perform()
def test_can_wait_for_exact_url(): open_url(start_page) wait_to(url(driver().current_url))
import self as self from selene import config, browser from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.select import Select from selene.api import s, ss from selene.browser import open_url, driver from selene.support.conditions import have from Exist.object_page_my_orders import MyOrders from Exist.object_page_persona_cabinet import PersonalCabinet config.timeout = 4 config.hold_browser_open = False config.browser_name = 'chrome' browser.driver() browser.open_url('https://exist.ua/') pc = PersonalCabinet() mo = MyOrders pc.log_in() mo.click_my_orders() time.sleep(15) # ----------------------------------------------- # office_select = mo.office_list()[0] # mo.click_office_sale() # mo.click_select_office_sale(office=office_select) # mo.click_btn_blue() # time.sleep(1) # office = list(set(mo.office_list()))
def teardown(): driver().quit()