def create_webdriver(self, driver_name):
     """Create corresponding webdriver and set it to compatibility tester"""
     if driver_name == 'chrome':
         self.set_browser(webdriver.Chrome())
     elif driver_name == 'firefox':
         self.set_browser(webdriver.Firefox())
     elif driver_name == 'android':
         self.set_browser(webdriver.Android())
     elif driver_name == 'blackberry':
         self.set_browser(webdriver.BlackBerry())
     elif driver_name == 'edge':
         self.set_browser(webdriver.Edge())
     elif driver_name == 'ie':
         self.set_browser(webdriver.Ie())
     elif driver_name == 'opera':
         self.set_browser(webdriver.Opera())
     elif driver_name == 'phantomjs':
         self.set_browser(webdriver.PhantomJS())
     elif driver_name == 'remote':
         self.set_browser(webdriver.Remote())
     elif driver_name == 'safari':
         self.set_browser(webdriver.Safari())
     elif driver_name == 'webkitgk':
         self.set_browser(webdriver.WebKitGTK())
     else:
         print('web driver name is invalid')
예제 #2
0
    def _make_browser(self, name, *args, **kwargs):

        name = name.lower()
        if name == self.CHROME_NAME.lower():
            return webdriver.Chrome(*args, **kwargs)

        elif name == self.FIREFOX_NAME.lower():
            return webdriver.Firefox(*args, **kwargs)

        elif name == self.EDGE_NAME.lower():
            return webdriver.Edge(*args, **kwargs)

        elif name == self.IE_NAME.lower():
            return webdriver.Ie(*args, **kwargs)

        elif name == self.OPERA_NAME.lower():
            return webdriver.Opera(*args, **kwargs)

        elif name == self.SAFARI_NAME.lower():
            return webdriver.Safari(*args, **kwargs)

        elif name == self.BLACKBERRY_NAME.lower():
            return webdriver.BlackBerry(*args, **kwargs)

        elif name == self.PHANTOMJS_NAME.lower():
            return webdriver.PhantomJS(*args, **kwargs)

        elif name == self.ANDROID_NAME.lower():
            return webdriver.Android(*args, **kwargs)

        elif name == self.WEBKITGTK_NAME.lower():
            return webdriver.WebKitGTK(*args, **kwargs)

        else:
            raise ValueError('{} is not a supported browser.'.format(name))
예제 #3
0
def main():
    if len(argv) < 2:
        raise Exception("Must provide a valid html base directory")
    if len(argv) < 3:
        raise Exception("Must provide a valid results directory")

    html_dir = argv[1]
    results_dir = argv[2]

    if not path.exists(results_dir):
        makedirs(results_dir)

    fuzz_files_names = get_fuzz_files_names(html_dir)
    print(fuzz_files_names)
    for fuzz_file in fuzz_files_names:
        try:
            browser = webdriver.WebKitGTK(
                options=options, desired_capabilities={})
            browser.set_page_load_timeout(PAGE_LOAD_TIMEOUT)

            print("Opening " + fuzz_file)
            browser.get(FILE_PREFIX + fuzz_file)

            print("Waiting for page changes")
            sleep(5)

            # getting the browser title to test access to the browser
            # if the browser has crashed this call should throw an exception
            browser_title = browser.title
            print(browser_title)
            print(fuzz_file + " has not crashed the browser")
            copyfile_to_result(fuzz_file, results_dir, SUCCESS_FLAG)
        except InvalidSessionIdException as e:
            print(fuzz_file + " crashed the browser")
            print(e)
            copyfile_to_result(fuzz_file, results_dir, CRASH_FLAG)
        except TimeoutException as e:
            print(fuzz_file + " timedout loading on the browser")
            print(e)
            copyfile_to_result(fuzz_file, results_dir, TIMEOUT_FLAG)
        except:
            print("A unexpected error ocurred using " + fuzz_file)
            copyfile_to_result(fuzz_file, results_dir, ERROR_FLAG)
        finally:
            try:
                browser.quit()
            except:
                pass
예제 #4
0
 def boot_driver(self):
     return webdriver.WebKitGTK(**self.browser_args)
 def getDriver(self):
     return webdriver.WebKitGTK()
예제 #6
0
def main() -> None:
    config = json_config.connect(
        join(dirname(__file__), '..', 'config', 'config.json'))

    webdriver_driver = str.lower(config['webdriver']['driver'] or '')
    webdriver_path = config['webdriver']['path']

    if not webdriver_path:
        print('Config Error: You must specify a valid webdriver path.')
        sys.exit(1)

    if webdriver_driver == 'chrome':
        browser = webdriver.Chrome(executable_path=webdriver_path)
    elif webdriver_driver == 'firefox':
        browser = webdriver.Firefox(executable_path=webdriver_path)
    elif webdriver_driver == 'edge':
        browser = webdriver.Edge(executable_path=webdriver_path)
    elif webdriver_driver == 'ie':
        browser = webdriver.Ie(executable_path=webdriver_path)
    elif webdriver_driver == 'safari':
        browser = webdriver.Safari(executable_path=webdriver_path)
    elif webdriver_driver == 'opera':
        browser = webdriver.Opera(executable_path=webdriver_path)
    elif webdriver_driver == 'phantomjs':
        browser = webdriver.PhantomJS(executable_path=webdriver_path)
    elif webdriver_driver == 'webkitgtk':
        browser = webdriver.WebKitGTK(executable_path=webdriver_path)
    else:
        print(
            'Config Error: You must specify a valid supported webdriver. '
            'Options: chrome, firefox, edge, ie, safari, opera, phantomjs, webkitgtk'
        )
        sys.exit(1)

    web_driver_wait = WebDriverWait(
        browser,
        float(config['webdriver']['timeout'])
        if config['webdriver']['timeout'] else 2)

    # MNSU eServices
    browser.get(config['eservices']['url'])

    # Login
    elem = web_driver_wait.until(
        expected_conditions.presence_of_element_located((By.ID, 'userName')))
    username = config['eservices']['username'] if config['eservices'][
        'username'] else input('eServices Username:'******'password')))
    pwd = config['eservices']['password'] if config['eservices'][
        'password'] else get_password_from_terminal(config)
    elem.send_keys(pwd + Keys.RETURN)

    web_driver_wait.until(
        expected_conditions.title_contains('Student Employment'))

    # Days where time has already been entered, so we don't go over them again (wasting time)
    days_entered = list()

    try:
        elems = web_driver_wait.until(
            expected_conditions.presence_of_all_elements_located(
                (By.CSS_SELECTOR, 'tbody > tr')))
    except selenium_exceptions.TimeoutException:
        # if no time has been entered, selenium will timeout searching for elements
        elems = list()

    for elem in elems:
        txt = elem.find_element_by_css_selector('td').text
        if txt != 'Total Hours':
            days_entered.append(txt)

    standardize_dates(days_entered)

    # Go to the "add time" page
    elem = web_driver_wait.until(
        expected_conditions.presence_of_element_located((By.ID, 'addTime')))
    elem.click()

    specific_file = input('Load from specific file? (empty for default.json, '
                          'specify the filename without json extension):')

    if not specific_file:
        submit_times_from_file(web_driver_wait, skip_days=days_entered)
    else:
        submit_times_from_file(web_driver_wait, specific_file, days_entered)

    browser.quit()