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
def driver(request):
    """Launching webdriver"""
    browser_name = request.config.getoption("--browser")
    print(browser_name)
    if browser_name == 'firefox':
        capabilities = webdriver.DesiredCapabilities.FIREFOX.copy()
        capabilities['timeouts'] = {
            'implicit': 300000,
            'pageLoad': 300000,
            'script': 30000
        }
        capabilities['loggingPrefs'] = {
            'browser': 'ALL',
            'client': 'ALL',
            'driver': 'ALL',
            'performance': 'ALL',
            'server': 'ALL'
        }
        profile = webdriver.FirefoxProfile()
        profile.set_preference('app.update.auto', False)
        profile.set_preference('app.update.enabled', False)
        profile.accept_untrusted_certs = True
        wd = EventFiringWebDriver(
            webdriver.Firefox(firefox_profile=profile,
                              capabilities=capabilities), TestListenerDB())
        wd.maximize_window()
    elif browser_name == 'chrome':
        capabilities = webdriver.DesiredCapabilities.CHROME.copy()
        capabilities['acceptSslCerts'] = True
        capabilities['acceptInsecureCerts'] = True
        capabilities['goog:loggingPrefs'] = {'performance': 'ALL'}
        # chrome_options = Options()
        # chrome_options.add_experimental_option('w3c', False)
        wd = EventFiringWebDriver(
            webdriver.Chrome(desired_capabilities=capabilities),
            TestListenerDB())
        wd.fullscreen_window()
    else:
        print('Unsupported browser!')
        sys.exit(1)
    wd.implicitly_wait((request.config.getoption("--iwait")))
    wd.set_page_load_timeout((request.config.getoption("--pltimeout")))
    implicitly_wait = request.config.getoption("--iwait")
    page_load_timeout = request.config.getoption("--pltimeout")
    print(implicitly_wait)
    print(page_load_timeout)
    yield wd
    wd.quit()
Пример #3
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()