class EnvironmentSetup(unittest.TestCase): PAGE_LOAD_TIME = 20 IMPLICITLY_WAIT = 10 log = cl.customLogger(logging.DEBUG) def setUp(self): self.log.debug("Properties initialization") self.prop = Property() try: self.dic_prop = self.prop.load_property_files("/Users/user/PycharmProjects/BGETest/config/config.properties") self.log.debug("Properties successfully loaded.") self.log.debug(self.dic_prop) except FileNotFoundError as err: self.log.error("config.properties file not found!!!") raise ValueError("There is no config.properties file in the project directory" + str(err)) browserName = self.dic_prop.get("browser", "chrome") if browserName.lower() == "firefox": self.driver = webdriver.Firefox() self.log.debug("Object for firefox is created - " + str(self.driver)) elif browserName.lower() == "chrome": self.driver = webdriver.Chrome() self.log.debug("Object for chrome is created - " + str(self.driver)) elif browserName.lower() == "safari": self.driver = webdriver.Safari() self.log.debug("Object for safari is created - " + str(self.driver)) else: raise ValueError("Unknown browser, please check the config.properties file") self.eventListener = WebEventListener() self.driver = EventFiringWebDriver(self.driver, self.eventListener) self.driver.maximize_window() self.driver.delete_all_cookies() self.log.debug("Cookies are successfully deleted") self.driver.set_page_load_timeout(self.PAGE_LOAD_TIME) self.driver.implicitly_wait(self.IMPLICITLY_WAIT) self.driver.get(self.dic_prop.get("url")) self.longMessage = False self.log.debug(self.id()) self.screenshot = ScreenShot(self.driver) try: self.screenshotName = "./results/{}.png".format(str(self.id()).split('.')[3]) except IndexError: self.screenshotName = "./results/{}.png".format(str(self.id()).split('.')[2]) def tearDown(self): if self.driver is not None: self.driver.close() self.driver.quit()
class MainTest(unittest.TestCase): @classmethod def setUpClass(self): driver = Config().browser() print("Run started at:" + str(datetime.datetime.utcnow())) self.ef_driver = EventFiringWebDriver(driver, ScreenshotListener()) self.ef_driver.maximize_window() def assert_element_text(self, xpath, expected_text): """ Compare expected text with observed value from web element :param xpath: xpath to element with text to be observed :param expected_text: text what we expecting to be found :return: None """ element = self.ef_driver.find_element_by_xpath(xpath) return self.assertEqual( element.text, expected_text, f'Expected message differ from {expected_text}') def assert_element_contains_innerText(self, selector, expected_text): """ Compare expected text with observed value from web elements :param selector: css_selector to list with elements to be observed :param expected_text: text what we expecting to be found in element from the list :return: assertions for every element """ elements = self.ef_driver.find_elements_by_css_selector(selector) for element in elements: return self.assertIn( element.get_attribute('innerText'), expected_text, f'Expected message differ from {expected_text}') def assert_title(self, url, expected_text): self.ef_driver.get(url) actual_title = self.ef_driver.title self.assertEqual( expected_text, actual_title, f'Expected {expected_text} differ from actual driver,') def go_driver_give_that_page(self, driver, url, page_object): tested_page = page_object(driver) driver.get(url) return tested_page @classmethod def tearDownClass(self): self.ef_driver.close() if (self.ef_driver != None): print("Test environment destroyed.") print("Run completed at: " + str(datetime.datetime.utcnow())) """
def configuration(request): web_driver = None url = excel.get_cell_value(constants.EXCEL_PATH, "BrowserSetting", 0, "URL") if request.param == "Chrome": web_driver = create_driver("Chrome", url) elif request.param == "Chrome": web_driver = create_driver("Chrome", url) driver = EventFiringWebDriver(web_driver, WebDriverListeners()) request.node.driver = driver yield if request.node.rep_call.failed: attach_screen_shot(driver, request.function.__name__) driver.close()
def main(): num = 1 url = "https://tinder.com/app/login" profile = webdriver.FirefoxProfile("") driver = webdriver.Firefox(firefox_profile=profile) driver = EventFiringWebDriver(driver, MyListener()) driver.get(url) time.sleep(5) driver.refresh() time.sleep(5) while num < 10000: num = num + 1 driver.find_element_by_tag_name("body").send_keys(Keys.RIGHT) #wait = WebDriverWait(driver, 20) wait = WebDriverWait(driver, 100000) element = wait.until( expected_conditions.visibility_of_element_located( (By.CSS_SELECTOR, "button.button:nth-child(5)"))) element.click() time.sleep(0.5) print(num) driver.close()
class SeletiounTestMixin(unittest.TestCase): BASE_EXT_QUERIES = { 'app-main': "Ext.ComponentQuery.query('app-main')", 'error_msg': "Ext.ComponentQuery.query('messagebox[title=Error]{isVisible()}')", 'confirm_msg': "Ext.ComponentQuery.query('messagebox:visible')", 'cofirm_msg_btn': "Ext.ComponentQuery.query('messagebox:visible button[text=Yes]')[0]", 'is_masked': "Ext.getBody().isMasked()" } def setUp(self): options = webdriver.ChromeOptions() options.add_argument('headless') options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") self.driver = EventFiringWebDriver( webdriver.Chrome(chrome_options=options), ScreenshotListener()) self.driver.set_page_load_timeout(10) self.driver.set_script_timeout(10) self.driver.maximize_window() self.driver.get(self.get_host()) self.wait_content_is_ready() def wait_content_is_ready(self): self.wait_js( "document.readyState=='complete' && window.Ext != undefined && window.Ext.ComponentQuery != undefined && {app-main}.length>0 && {app-main}[0].rendered" .format(**self.BASE_EXT_QUERIES), 'View is not rendered!') def wait_js(self, query, error, timeout=20, silent=False): try: WebDriverWait(self.driver, timeout).until( lambda _: self.driver.execute_script("return %s" % query), error) except TimeoutException as e: if not silent: self.driver._listener.on_exception(e, self.driver.wrapped_driver) raise e def wait_while_load_mask(self, silent=False): self.wait_js("!Ext.getBody().isMasked()", 'Loading takes too much time.', silent=silent) def click_by_id(self, dom_id): element = self.driver.find_element_by_id(dom_id) builder = ActionChains(self.driver) builder.move_to_element(element).click(element).perform() def click_component(self, query): cmp_id = self.driver.execute_script("return %s.id" % query) self.driver.find_element_by_id(cmp_id).click() def get_host(self): return "http://127.0.0.1:%s" % TORNADO_PORT def open_page(self, relative_url): self.driver.get("%s/%s" % (self.get_host(), relative_url)) self.wait_content_is_ready() def refresh_page(self): self.driver.get(self.driver.current_url) self.wait_content_is_ready() def tearDown(self): self.driver.close() self.driver.quit()