def _send_exit_flow_marker( *args, **kwargs): # for apiritif. remove when compatibiltiy code in stage = "stop" # apiritif removed (http.py) and apiritif released ( > 0.9.2) labels = "status", "message" values = get_from_thread_store(labels) params = dict(zip(labels, values)) _send_marker(stage, params)
def _get_timeout(): timeout = get_from_thread_store("timeout") if not (timeout or timeout == 0): # timeout in (None, []), default requires timeout = 30 return timeout
def _wait_for_opened_window(expected_windows_no, timeout=2): driver = _get_driver() windows = get_from_thread_store("windows") WebDriverWait(driver, timeout).until(econd.number_of_windows_to_be(expected_windows_no)) windows_after = driver.window_handles new_window = [x for x in windows_after if x not in list(windows.values())][0] name = "wnd_name_internal_%s" % expected_windows_no # just any unique name windows[name] = new_window driver.switch_to.window(new_window)
def go(url): dialogs_replace() driver = _get_driver() windows = get_from_thread_store("windows") wait_for_wnd_open = False if len(windows) == 0: wait_for_wnd_open = True driver.get(url) if wait_for_wnd_open: WebDriverWait(driver, _get_timeout()).until(econd.number_of_windows_to_be(1)) windows["wnd_name_internal_0"] = driver.window_handles[0]
def close_window(window_name=None): driver = _get_driver() prev_windows = get_from_thread_store("windows") prev_no_of_windows = len(prev_windows) if window_name: switch_window(window_name) _get_driver().close() WebDriverWait(driver, _get_timeout()).until(econd.number_of_windows_to_be(prev_no_of_windows-1)) windows_after = driver.window_handles closed_window = [x for x in list(prev_windows.values()) if x not in windows_after][0] key_list = list(prev_windows.keys()) val_list = list(prev_windows.values()) key = key_list[val_list.index(closed_window)] del prev_windows[key]
def _send_start_flow_marker(*args, **kwargs): # for apiritif. remove when compatibiltiy code in stage = "start" # apiritif removed (http.py) and apiritif released ( > 0.9.2) test_case, test_suite, scenario_name, data_sources = get_from_thread_store( ['test_case', 'test_suite', 'scenario_name', 'data_sources'] ) params = { "testCaseName": test_case, "testSuiteName": scenario_name or test_suite} if data_sources: params["testDataIterationId"] = get_iteration() _send_marker(stage, params)
def _switch_by_win_ser(window_name): driver = _get_driver() if window_name == "win_ser_local": wnd_handlers = driver.window_handles if len(wnd_handlers) > 0: driver.switch_to.window(wnd_handlers[0]) else: raise NoSuchWindowException("Invalid Window ID: %s" % window_name) elif window_name.split("win_ser_")[1].isdigit(): # e.g. win_ser_1 _switch_by_idx(int(window_name.split("win_ser_")[1])) else: windows = get_from_thread_store("windows") if window_name not in windows: windows[window_name] = driver.current_window_handle driver.switch_to.window(windows[window_name])
def _run_transaction(self): apiritif.put_into_thread_store(driver=self.driver, func_mode=False, controller=self.controller) apiritif.set_transaction_handlers({ 'enter': [self._enter_handler], 'exit': [self._exit_handler] }) tran = smart_transaction(self.thread_name) with tran: self.transaction_driver = tran.driver self.transaction_controller = tran.controller raise Exception(self.exception_message) self.message_from_thread_store = apiritif.get_from_thread_store( 'message')
def _send_start_flow_marker( *args, **kwargs): # for apiritif. remove when compatibiltiy code in stage = "start" # apiritif removed (http.py) and apiritif released ( > 0.9.2) test_case, test_suite, scenario_name, data_sources, action_handlers, driver = get_from_thread_store( [ 'test_case', 'test_suite', 'scenario_name', 'data_sources', 'action_handlers', 'driver' ]) params = { "testCaseName": test_case, "testSuiteName": scenario_name or test_suite } if data_sources: params["testDataIterationId"] = get_iteration() for handler in action_handlers: handler.handle(driver.session_id, BaseActionHandler.TEST_CASE_START, params) _send_marker(stage, params)
def test_setup_teardown_graceful(self): error_tests = [ os.path.join(RESOURCES_DIR, "setup_teardown_graceful.py") ] outfile = tempfile.NamedTemporaryFile() params = Params() params.concurrency = 1 params.iterations = 1 params.report = outfile.name params.tests = error_tests params.verbose = True worker = Worker(params) worker.run_nose(params) # todo: fix result of "samples = self.apiritif_extractor.parse_recording(recording, sample)" test_result = apiritif.get_from_thread_store('test_result') sample = [ '1. setup1', '2. setup2', '3. main1', '4. main2', '5. teardown1', '6. teardown2' ] self.assertEqual(sample, test_result)
def setUp(self): (self.vars, self.driver, self.wnd_mng, self.frm_mng) = apiritif.get_from_thread_store()
def teardown(): (_, driver, _, _) = apiritif.get_from_thread_store() driver.quit()
def _get_driver(): return get_from_thread_store("driver")
def _send_marker(stage, params): driver = get_from_thread_store("driver") driver.execute_script('/* FLOW_MARKER test-case-%s */' % stage, params)
def setUp(self): (self.vars, self.target) = apiritif.get_from_thread_store()
def check_opened_new_window(): windows = get_from_thread_store("windows") try: _wait_for_opened_window(len(windows)+1) except TimeoutException: pass # OK, the action didn't open a new window
def setUp(self): self.vars, self.target = apiritif.get_from_thread_store()
def teardown(): (_, driver, _, _) = apiritif.get_from_thread_store() driver.quit()
def write(line): test_result = apiritif.get_from_thread_store('test_result') test_result.append(line) apiritif.put_into_thread_store(test_result=test_result)
def setUp(self): (self.vars, ) = apiritif.get_from_thread_store()
def setUp(self): (self.vars, self.driver, self.wnd_mng, self.frm_mng) = apiritif.get_from_thread_store()
def open_window(url): driver = _get_driver() prev_windows = get_from_thread_store("windows") driver.execute_script("window.open('%s');" % url) _wait_for_opened_window(len(prev_windows)+1, _get_timeout())