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()
Пример #2
0
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()))

    """
Пример #3
0
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()
Пример #4
0
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()
Пример #5
0
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()