Exemple #1
0
def function_driver(request):
    browser = request.config.getoption("--browser")
    browser_opt = request.config.getoption("--browser_opt")
    print("获取命令行传参:{}".format(request.config.getoption("--browser")))
    # 是否开启浏览器设置,根据命令行传参,browser_opt判断,默认open
    if browser_opt == "open":
        if browser == "chrome":
            driver = webdriver.Chrome()
        elif browser == "firefox":
            driver = webdriver.Firefox()
        elif browser == "ie":
            driver = webdriver.Ie()
        else:
            logging.info("发送错误浏览器参数:{}".format(browser))
    else:
        if browser == "chrome":
            chrome_options = CO()
            chrome_options.add_argument('--headless')
            driver = webdriver.Chrome(chrome_options=chrome_options)
        elif browser == "firefox":
            firefox_options = FO()
            firefox_options.add_argument('--headless')
            driver = webdriver.Firefox(firefox_options=firefox_options)
        elif browser == "ie":
            ie_options = IEO()
            ie_options.add_argument('--headless')
            driver = webdriver.Ie(ie_options=ie_options)
        else:
            logging.info("发送错误浏览器参数:{}".format(browser))
    yield driver
    # driver.close()
    driver.quit()
Exemple #2
0
    def __init__(
        self,
        ie_options: Options = None,
        desired_capabilities: dict = None,
        token: str = None,
        project_name: str = None,
        job_name: str = None,
        disable_reports: bool = False,
    ):
        # If no options or capabilities are specified at all, use default Options
        if ie_options is None and desired_capabilities is None:
            caps = Options().to_capabilities()
        else:
            # Specified IE Options take precedence over desired capabilities but either can be used
            caps = (
                ie_options.to_capabilities()
                if ie_options is not None
                else desired_capabilities
            )

        super().__init__(
            capabilities=caps,
            token=token,
            project_name=project_name,
            job_name=job_name,
            disable_reports=disable_reports,
        )
Exemple #3
0
 def __init__(self, browser):
     self.browser = browser
     chrome_options = self.chrome_options(options='start-maximized')
     yandex_options = self.yandex_options(options='start-maximized')
     if browser == 'yandex':
         self.driver = webdriver.Chrome(
             executable_path='C:/1/chromedriver.exe',
             chrome_options=yandex_options)
     elif browser == 'ie':
         ie_options = Options()
         ie_options.ignore_protected_mode_settings = True
         ie_options.ignore_zoom_level = True
         self.driver = webdriver.Ie(
             executable_path=r'C:\1\IEDriverServer.exe', options=ie_options)
     elif browser == 'chrome':
         self.driver = webdriver.Chrome(
             executable_path='C:/1/chromedriver.exe',
             chrome_options=chrome_options)
     elif browser == 'firefox':
         self.driver = webdriver.Chrome(
             executable_path='C:/1/gekodriver.exe')
     else:
         raise ValueError
     self.wiki = WikiMainHepler(self)
     self.driver.implicitly_wait(2)
 def __init__(self):
     opts = Options()
     # opts.ignore_protected_mode_settings = True
     opts.require_window_focus = True
     opts.ignore_zoom_level = True
     self.browser = webdriver.Ie("drivers\\32bit_IEDriverServer.exe",
                                 options=opts)
def test_ie_compatibility_session():
    options = IEOptions()
    options.attach_to_edge_chrome = True
    options.edge_executable_path = "/path/to/edge/browser"
    driver = webdriver.Ie(options=options)

    driver.quit()
def test_launch_ie_with_options(pages):
    opts = Options()
    expected = "clicks.html"
    opts.initial_browser_url = pages.url(expected)
    driver = Ie(options=opts)
    actual = driver.current_url
    driver.quit()
    assert expected in actual
Exemple #7
0
def connect_ie_driver(headless):
    """Function to connect with ie driver """
    #initialise chrome options
    options = IeOptions()
    #set headless option on driver
    options.headless = headless
    #initialise driver
    driver = webdriver.Ie(IEDriverManager().install(), options=options)
    return driver
Exemple #8
0
 def _process_ie_options(self, opts):
     from selenium.webdriver.ie.options import Options
     if isinstance(opts, Options):
         options = opts
     else:
         options = Options()
         if 'args' in opts:
             for arg in opts.pop('args'):
                 options.add_argument(arg)
     self.selenium_opts['options'] = options
 def __init__(self):
     super(SelDriver, self).__init__()
     opts = Options()
     opts.ignore_protected_mode_settings = True
     opts.ignore_zoom_level = True
     dir = os.path.dirname(os.path.abspath(__file__))
     path = dir + r'\\asset\\selenium\\chromedriver.exe'
     self.driver = webdriver.Chrome(executable_path=path, chrome_options=opts)
     self.access()
     self.login()
Exemple #10
0
 def _create_IE_options(api_obj):
     options = IEOptions()
     args = set()
     #not recommended, ensure correct security settings in IE
     args.add(IEOptions.IGNORE_PROTECTED_MODE_SETTINGS)
     args.add(IEOptions.ENSURE_CLEAN_SESSION)
     args.add(IEOptions.IGNORE_ZOOM_LEVEL)
     args.add(IEOptions.REQUIRE_WINDOW_FOCUS)
     args.add(IEOptions.PERSISTENT_HOVER)
     if api_obj.browser_options_args:
         args.update(api_obj.browser_options_args)
     for arg in args:
         if arg:
             options.add_argument(arg)
     if api_obj.http_proxy:
         proxy = {
             'proxyType': "manual",
             'httpProxy': str(api_obj.http_proxy)
         }
         options.set_capability("proxy", proxy)
     options.set_capability(IEOptions.NATIVE_EVENTS, False)
     if api_obj.browser_options_dict:
         for k, v in api_obj.browser_options_dict.items():
             options.set_capability(k, v)
     return options
Exemple #11
0
def function_driver(request):
    """
    driver注入
    @param request:
    @return:
    """
    browser = request.config.getoption("--browser")
    # 用于本地启动是否开启浏览器设置,根据命令行传参,browser_opt判断,默认open
    browser_opt = request.config.getoption("--browser_opt")
    print("获取命令行传参:{}".format(request.config.getoption("--browser")))
    type_driver = request.config.getoption("--type_driver")
    # 判断是本地还是远程
    if type_driver == "local":
        if browser_opt == "open":
            if browser == "chrome":
                driver = webdriver.Chrome()
            elif browser == "firefox":
                driver = webdriver.Firefox()
            elif browser == "ie":
                driver = webdriver.Ie()
            else:
                logging.info("发送错误浏览器参数:{}".format(browser))
        else:
            if browser == "chrome":
                chrome_options = CO()
                chrome_options.add_argument('--headless')
                driver = webdriver.Chrome(chrome_options=chrome_options)
            elif browser == "firefox":
                firefox_options = FO()
                firefox_options.add_argument('--headless')
                driver = webdriver.Firefox(firefox_options=firefox_options)
            elif browser == "ie":
                ie_options = IEO()
                ie_options.add_argument('--headless')
                driver = webdriver.Ie(ie_options=ie_options)
            else:
                logging.info("发送错误浏览器参数:{}".format(browser))
        yield driver
        # driver.close()
        driver.quit()
    elif type_driver == "remote":
        driver = Remote(command_executor=selenium_config["selenium_config"]
                        ["selenium_hub_url"],
                        desired_capabilities={
                            'platform': 'ANY',
                            'browserName': browser,
                            'version': '',
                            'javascriptEnabled': True
                        })
        yield driver
        # driver.close()
        driver.quit()
    else:
        logging.error("driver参数传递错误,请检查参数:{}".format(type_driver))
Exemple #12
0
 def test_Notificacion_box(self):
     Opciones = Options()
     #enviar argumentos 1 = permitir notificacion, 2 = bloquear notificacion
     Opciones.add_experimental_option(
         "prefs",
         {"profile.default_content_setting_values.notifications", 2})
     driver = self.driver
     driver.maximize_window()
     driver.get("http://developer.mozilla.org/es/docs/web/API/notification")
     print("Titulo de la aplicación: ", driver.title)
     print("URL de la aplicación: ", driver.current_url)
     self.assertIn("Notification - Referencia de la API Web | MDN",
                   driver.title)
     time.sleep(3)
Exemple #13
0
 def __init__(
     self,
     ie_options: Options = Options(),
     token: str = None,
     projectname: str = None,
     jobname: str = None,
     disable_reports: bool = False,
 ):
     super().__init__(
         capabilities=ie_options.to_capabilities(),
         token=token,
         projectname=projectname,
         jobname=jobname,
         disable_reports=disable_reports,
     )
    def ie_settings(self, optional_settings=[None], optional_proxy=None):

        # Definição das variáveis
        ie_options = Options()

        # Define as configurações adcionais do driver
        ie_options.ignore_protected_mode_settings = True

        # Inicia o driver e carrega as configurações
        driver = webdriver.Ie(
            IEDriverManager('').install('./driver/IEDriverServer_win.exe'),
            options=ie_options)

        # Retorna o driver configurado para a aplicação principal
        return driver
Exemple #15
0
class InternetExplorer(Browser):

    _webdriver = Webdriver
    _options = Options()

    def __init__(self, **options):
        """
        Initialize IE browser session with options provided.
        :param options:
        """

        [
            self._options.add_argument(arg)
            for arg in options.get('arguments', [])
        ]
        [
            self._options.add_additional_option(name, opt)
            for name, opt in options.get('additional_options', {}).items()
        ]

    def _override(self):
        """
        Overrides link in case of certain exceptions.
        :return:
        """

        try:
            self._session.get(
                'javascript:document.getElementById("overridelink").click();')
        except Exception as e:
            print(type(e), e)
Exemple #16
0
def browser_ie(browser_path="", driver_path=""):
    """
    ie内核浏览器兼容,
    :param browser_path: 浏览器路径,
    :param driver_path: 驱动路径,
    :return: driver,
    """
    global driver
    if len(browser_path) > 0:
        options = IeOptions()
        options.binary_location = browser_path
    else:
        options = None
    if len(driver_path) == 0 :
        driver_path = "IEDriverServer.exe"
    driver = webdriver.Ie(executable_path=driver_path, options=options)  # 需要在设置-安全-四个区域中统一启用安全模式,
    return driver
    def getWebDriverInstance(self):
        baseURL = "https://learn.letskodeit.com/p/practice"
        if self.browser == "ie":
            driver_path = "C:\\DevTools\\webdriver\\IEDriverServer_win32_3.14.0.exe"
            os.environ["webdriver.ie.driver"] = driver_path
            options = IeOptions()
            options.binary_location = "C:\\Program Files\\internet explorer\\iexplore.exe"
            driver = webdriver.Ie(executable_path=driver_path,
                                  options=options,
                                  service_log_path='./Log/iedriver.log')

        elif self.browser == 'firefox':
            driver_path = "C:\\DevTools\\webdriver\\geckodriver_0.24.0.exe"
            driver = webdriver.Firefox(
                executable_path=driver_path,
                service_log_path='./Log/geckodriver.log')

        elif self.browser == 'chrome':
            # https://chromedriver.chromium.org/downloads/version-selection
            # PROD
            driver_path = "C:\\DevTools\\webdriver\\chromedriver_76.0.3809.126.exe"
            os.environ["webdriver.chrome.driver"] = driver_path
            options = Options()
            options.binary_location = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
            driver = webdriver.Chrome(
                executable_path=driver_path,
                options=options,
                service_log_path='./Log/chromedriver.log')
            # DEV
            # driver_path = "C:\\DevTools\\webdriver\\chromedriver_77.0.3865.40.exe"
            # os.environ["webdriver.chrome.driver"] = driver_path
            # options = Options()
            # options.binary_location = "C:\\Program Files (x86)\\Google\\Chrome Dev\\Application\\chrome.exe"
            # driver = webdriver.Chrome(executable_path=driver_path, options=options, service_log_path='./Log/chromedriver.log')

        else:
            driver_path = "C:\\DevTools\\webdriver\\geckodriver_0.24.0.exe"
            driver = webdriver.Firefox(
                executable_path=driver_path,
                service_log_path='./Log/geckodriver.log')

        driver.implicitly_wait(3)
        driver.maximize_window()
        driver.get(baseURL)
        return driver
Exemple #18
0
 def connect_ie_driver(self):
     """Functions to connect with ie driver """
     #initialise chrome options
     self.options = IeOptions()
     #add cookies on driver
     self.options.add_argument("user-data-dir=selenium")
     #initialise driver
     self.driver = webdriver.Ie(IEDriverManager().install(),
                                ie_options=self.options)
     return self.driver
Exemple #19
0
 def connect_firefox_driver(self):
     """Functions to connect with firefox driver """
     #initialise chrome options
     self.options = FirefoxOptions()
     #add cookies on driver
     self.options.add_argument("user-data-dir=selenium")
     #initialise driver
     self.driver = webdriver.Firefox(
         executable_path=GeckoDriverManager().install(),
         firefox_options=self.options)
     return self.driver
Exemple #20
0
class DriverSelectorIe:
    """
    Concrete IE driver selector class

    Methods
    ------

    __init__(arguments)
        sets up options for IE with arguments specified

    get_webdriver_instance()
        returns IE driver instance
    """

    def __init__(self, arguments):
        self.options = IeOptions()
        for argument in arguments:
            self.options.add_argument(argument)

    def get_webdriver_instance(self):
        return webdriver.Ie(options=self.options)
Exemple #21
0
def open_browser(executable_path='IEDriverServer',
                 capabilities=None,
                 port=0, timeout=30, host=None, log_level=None, log_file=None,
                 options=None, ie_options=None):

    capabilities = DesiredCapabilities.INTERNETEXPLORER.copy()
    options = Options()
    options.ignore_zoom_level = True
    options.require_window_focus = True
    options.ignore_protected_mode_settings = True
    options.native_events = False
    options.enable_persistent_hover = True
    options.ensure_clean_session = True
    options.javascript_enabled = True
    driver = webdriver.Ie(executable_path, capabilities, port, timeout, host,
                          log_level, log_file, options, ie_options)

    browser.cache_browser(driver)
    return driver
Exemple #22
0
def IEdrivernobrowser():
    # 无头启动
    IE_options = Options()
    IE_options.add_argument("--headless")
    IE_options.add_argument("--disable-gpu")
    # 规避检测
    option = IeOptions()
    option.add_additional_option('excludeSwitches', ['enable-automation'])
    driver = webdriver.Ie(ie_options=IE_options, options=option)
    return driver
 def mybrowser(browser):
     driver = None
     str1 = platform.platform()
     op = str1.split("-")[0]
     if op == "Linux":
         if (browser.lower() == "firefox"):
             Firefox_option = fireop()
             fireop.add_argument('--headless')
             driver = Firefox(executable_path=FIREFOX_DIR,
                              firefox_options=Firefox_option)
             Logger.logger.info("启动火狐浏览器,请稍等")
             driver.maximize_window()
         if browser.lower() == "chrome":
             Chrome_option = chop()
             Chrome_option.add_argument('--headless')
             driver = Chrome(executable_path=CHROME_DIR,
                             chrome_options=Chrome_option)
             Logger.logger.info("启动谷歌浏览器,请稍等")
             driver.maximize_window()
         if browser.lower() == "ie":
             op = Options()
             op.add_argument('--headless')
             op.set_capability(op.IGNORE_PROTECTED_MODE_SETTINGS, True)
             driver = Ie(executable_path=IE_DIR, ie_options=op)
             Logger.logger.info("启动ie浏览器,请稍等")
             driver.maximize_window()
     else:
         if (browser.lower() == "firefox"):
             driver = Firefox(executable_path=FIREFOX_DIR)
             Logger.logger.info("启动火狐浏览器,请稍等")
             driver.maximize_window()
         if browser.lower() == "chrome":
             driver = Chrome(executable_path=CHROME_DIR)
             Logger.logger.info("启动谷歌浏览器,请稍等")
             driver.maximize_window()
         if browser.lower() == "ie":
             op.set_capability(op.IGNORE_PROTECTED_MODE_SETTINGS, True)
             driver = Ie(executable_path=IE_DIR)
             Logger.logger.info("启动ie浏览器,请稍等")
             driver.maximize_window()
     return driver
Exemple #24
0
    def __init__(
        self,
        ie_options: Options = None,
        desired_capabilities: dict = None,
        token: str = None,
        projectname: str = None,
        jobname: str = None,
        disable_reports: bool = False,
    ):
        # Specified IE Options take precedence over desired capabilities but either can be used
        caps = (ie_options.to_capabilities()
                if ie_options is not None else desired_capabilities)

        super().__init__(
            capabilities=caps,
            token=token,
            projectname=projectname,
            jobname=jobname,
            disable_reports=disable_reports,
        )
Exemple #25
0
def ie_autoload():
    ie_option = IOptions()
    # 设置隐藏模式
    ie_option.add_argument('--disable-gpu')
    ie_option.add_argument('--no-sandbox')
    ie_option.add_argument('--disable-dev-shm-usage')
    ie_driver = webdriver.Ie(options=ie_option)
    # 登陆网页保存cookie
    try:
        url1 = 'https://auth.xfmgroup.com/cas/login?' \
               'service=http%3a%2f%2fmes.xfmgroup.com%2fWebUI%2fIPWeb%2f'
        ie_driver.get(url1)
        time.sleep(5)
        ie_driver.find_element_by_xpath('//*[@id="fm1"]/div/div[3]/input[4]').click()
        time.sleep(5)
        # 进入需要计算的页面
        url2 = 'http://fbbb.xfmgroup.com/FBBB/Integrates/DispatcherIn.aspx?' \
               'funcid=00010013&DATE=%s' % yesterday2
        ie_driver.get(url2)

        # 等待frame/left加载出来
        WebDriverWait(ie_driver, 30).until(EC.presence_of_element_located(
            (By.XPATH, '//frame[@name="left"]')))
        ie_driver.switch_to.frame('left')
        time.sleep(1)
        ie_driver.find_element_by_id('btnCompute').click()

        # 等待计算按钮重新加载出来
        WebDriverWait(ie_driver, 30).until(EC.presence_of_element_located(
            (By.XPATH, '//input[@id="btnCompute"]')))

        # 结束
        ie_driver.quit()
    except:
        # 异常退出
        ie_driver.quit()
        wechat_auto().send_mesg(0, 'person', 5)
Exemple #26
0
def get_local_driver(browser_name, headless, proxy_string):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(downloads_path, proxy_string)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options,
                        executable_path=LOCAL_GECKODRIVER)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except WebDriverException:
                # Don't use Geckodriver: Only works for old versions of Firefox
                profile = _create_firefox_profile(downloads_path, proxy_string)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = False
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            make_driver_executable_if_not(LOCAL_IEDRIVER)
            return webdriver.Ie(capabilities=ie_capabilities,
                                executable_path=LOCAL_IEDRIVER)
        else:
            return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        if not IS_WINDOWS:
            raise Exception(
                "Edge Browser is for Windows-based operating systems only!")
        edge_capabilities = DesiredCapabilities.EDGE.copy()
        if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
            make_driver_executable_if_not(LOCAL_EDGEDRIVER)
            return webdriver.Edge(capabilities=edge_capabilities,
                                  executable_path=LOCAL_EDGEDRIVER)
        else:
            return webdriver.Edge(capabilities=edge_capabilities)
    elif browser_name == constants.Browser.SAFARI:
        return webdriver.Safari()
    elif browser_name == constants.Browser.OPERA:
        if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
            make_driver_executable_if_not(LOCAL_OPERADRIVER)
            return webdriver.Opera(executable_path=LOCAL_OPERADRIVER)
        else:
            return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(downloads_path, proxy_string)
            if headless:
                chrome_options.add_argument("--headless")
                chrome_options.add_argument("--disable-gpu")
                chrome_options.add_argument("--no-sandbox")
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(executable_path=LOCAL_CHROMEDRIVER,
                                        options=chrome_options)
            else:
                return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(executable_path=LOCAL_CHROMEDRIVER)
            else:
                return webdriver.Chrome()
def get_local_driver(browser_name, headless, servername, proxy_string,
                     proxy_auth, proxy_user, proxy_pass, user_agent,
                     disable_csp, enable_sync, no_sandbox, disable_gpu,
                     incognito, guest_mode, devtools, user_data_dir,
                     extension_zip, extension_dir, mobile_emulator,
                     device_width, device_height, device_pixel_ratio):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                    firefox_capabilities['moz:firefoxOptions'] = ({
                        'args': ['-headless']
                    })
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    try:
                        make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    except Exception as e:
                        logging.debug("\nWarning: Could not make geckodriver"
                                      " executable: %s" % e)
                elif not is_geckodriver_on_path():
                    args = " ".join(sys.argv)
                    if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                        # (Not multithreaded)
                        from seleniumbase.console_scripts import sb_install
                        sys_args = sys.argv  # Save a copy of current sys args
                        print("\nWarning: geckodriver not found!"
                              " Installing now:")
                        try:
                            sb_install.main(override="geckodriver")
                        except Exception as e:
                            print("\nWarning: Could not install geckodriver: "
                                  "%s" % e)
                        sys.argv = sys_args  # Put back the original sys args
                if "linux" in PLATFORM or not headless:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except Exception:
                profile = _create_firefox_profile(downloads_path, proxy_string,
                                                  user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            try:
                make_driver_executable_if_not(LOCAL_IEDRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make iedriver"
                              " executable: %s" % e)
        return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        try:
            chrome_options = _set_chrome_options(
                downloads_path, headless, proxy_string, proxy_auth, proxy_user,
                proxy_pass, user_agent, disable_csp, enable_sync, no_sandbox,
                disable_gpu, incognito, guest_mode, devtools, user_data_dir,
                extension_zip, extension_dir, servername, mobile_emulator,
                device_width, device_height, device_pixel_ratio)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            elif not is_edgedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: msedgedriver not found. Installing now:")
                    sb_install.main(override="edgedriver")
                    sys.argv = sys_args  # Put back the original sys args
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
                                    options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER)
    elif browser_name == constants.Browser.SAFARI:
        arg_join = " ".join(sys.argv)
        if ("-n" in sys.argv) or ("-n=" in arg_join) or (arg_join == "-c"):
            # Skip if multithreaded
            raise Exception("Can't run Safari tests in multi-threaded mode!")
        return webdriver.Safari()
    elif browser_name == constants.Browser.OPERA:
        if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
            try:
                make_driver_executable_if_not(LOCAL_OPERADRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make operadriver"
                              " executable: %s" % e)
        return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(
                downloads_path, headless, proxy_string, proxy_auth, proxy_user,
                proxy_pass, user_agent, disable_csp, enable_sync, no_sandbox,
                disable_gpu, incognito, guest_mode, devtools, user_data_dir,
                extension_zip, extension_dir, servername, mobile_emulator,
                device_width, device_height, device_pixel_ratio)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            elif not is_chromedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: chromedriver not found. Installing now:")
                    sb_install.main(override="chromedriver")
                    sys.argv = sys_args  # Put back the original sys args
            return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome()
    else:
        raise Exception("%s is not a valid browser option for this system!" %
                        browser_name)
Exemple #28
0
def get_local_driver(
        browser_name, headless, locale_code, servername,
        proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
        disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
        disable_gpu, incognito, guest_mode, devtools, swiftshader,
        block_images, user_data_dir, extension_zip, extension_dir,
        mobile_emulator, device_width, device_height, device_pixel_ratio):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(
                    downloads_path, locale_code,
                    proxy_string, user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                    firefox_capabilities['moz:firefoxOptions'] = (
                        {'args': ['-headless']})
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    try:
                        make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    except Exception as e:
                        logging.debug("\nWarning: Could not make geckodriver"
                                      " executable: %s" % e)
                elif not is_geckodriver_on_path():
                    args = " ".join(sys.argv)
                    if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                        # (Not multithreaded)
                        from seleniumbase.console_scripts import sb_install
                        sys_args = sys.argv  # Save a copy of current sys args
                        print("\nWarning: geckodriver not found!"
                              " Installing now:")
                        try:
                            sb_install.main(override="geckodriver")
                        except Exception as e:
                            print("\nWarning: Could not install geckodriver: "
                                  "%s" % e)
                        sys.argv = sys_args  # Put back the original sys args
                if "linux" in PLATFORM or not headless:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except Exception:
                profile = _create_firefox_profile(
                    downloads_path, locale_code,
                    proxy_string, user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile,
                    capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            try:
                make_driver_executable_if_not(LOCAL_IEDRIVER)
            except Exception as e:
                logging.debug("\nWarning: Could not make iedriver"
                              " executable: %s" % e)
        return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        try:
            chrome_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext,
                no_sandbox, disable_gpu, incognito, guest_mode, devtools,
                swiftshader, block_images, user_data_dir,
                extension_zip, extension_dir, servername,
                mobile_emulator, device_width, device_height,
                device_pixel_ratio)
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            elif not is_edgedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: msedgedriver not found. Installing now:")
                    sb_install.main(override="edgedriver")
                    sys.argv = sys_args  # Put back the original sys args
            # For Microsoft Edge (Chromium) version 79 or lower
            return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
                                    options=chrome_options)
        except Exception:
            # For Microsoft Edge (Chromium) version 80 or higher
            from msedge.selenium_tools import Edge, EdgeOptions
            if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_EDGEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make edgedriver"
                                  " executable: %s" % e)
            edge_options = EdgeOptions()
            edge_options.use_chromium = True
            prefs = {
                "download.default_directory": downloads_path,
                "local_discovery.notifications_enabled": False,
                "credentials_enable_service": False,
                "download.prompt_for_download": False,
                "download.directory_upgrade": True,
                "safebrowsing.enabled": False,
                "safebrowsing.disable_download_protection": True,
                "profile": {
                    "password_manager_enabled": False,
                    "default_content_setting_values.automatic_downloads": 1,
                    "managed_default_content_settings.automatic_downloads": 1,
                    "default_content_settings.popups": 0,
                    "managed_default_content_settings.popups": 0
                }
            }
            if locale_code:
                prefs["intl.accept_languages"] = locale_code
            if block_images:
                prefs["profile.managed_default_content_settings.images"] = 2
            edge_options.add_experimental_option("prefs", prefs)
            edge_options.add_experimental_option("w3c", True)
            edge_options.add_experimental_option(
                "useAutomationExtension", False)
            edge_options.add_experimental_option(
                "excludeSwitches", ["enable-automation", "enable-logging"])
            if guest_mode:
                edge_options.add_argument("--guest")
            if headless:
                edge_options.add_argument("--headless")
            if mobile_emulator:
                emulator_settings = {}
                device_metrics = {}
                if type(device_width) is int and (
                        type(device_height) is int and (
                        type(device_pixel_ratio) is int)):
                    device_metrics["width"] = device_width
                    device_metrics["height"] = device_height
                    device_metrics["pixelRatio"] = device_pixel_ratio
                else:
                    device_metrics["width"] = 411
                    device_metrics["height"] = 731
                    device_metrics["pixelRatio"] = 3
                emulator_settings["deviceMetrics"] = device_metrics
                if user_agent:
                    emulator_settings["userAgent"] = user_agent
                edge_options.add_experimental_option(
                    "mobileEmulation", emulator_settings)
                edge_options.add_argument("--enable-sync")
            edge_options.add_argument("--disable-infobars")
            edge_options.add_argument("--disable-save-password-bubble")
            edge_options.add_argument("--disable-single-click-autofill")
            edge_options.add_argument(
                "--disable-autofill-keyboard-accessory-view[8]")
            edge_options.add_argument("--disable-translate")
            if not enable_ws:
                edge_options.add_argument("--disable-web-security")
            edge_options.add_argument("--homepage=about:blank")
            edge_options.add_argument("--dns-prefetch-disable")
            edge_options.add_argument("--dom-automation")
            edge_options.add_argument("--disable-hang-monitor")
            edge_options.add_argument("--disable-prompt-on-repost")
            if proxy_string:
                edge_options.add_argument('--proxy-server=%s' % proxy_string)
            edge_options.add_argument("--test-type")
            edge_options.add_argument("--log-level=3")
            edge_options.add_argument("--no-first-run")
            edge_options.add_argument("--ignore-certificate-errors")
            if devtools and not headless:
                edge_options.add_argument("--auto-open-devtools-for-tabs")
            edge_options.add_argument("--allow-file-access-from-files")
            edge_options.add_argument("--allow-insecure-localhost")
            edge_options.add_argument("--allow-running-insecure-content")
            if user_agent:
                edge_options.add_argument("--user-agent=%s" % user_agent)
            edge_options.add_argument("--no-sandbox")
            if swiftshader:
                edge_options.add_argument("--use-gl=swiftshader")
            else:
                edge_options.add_argument("--disable-gpu")
            if "linux" in PLATFORM:
                edge_options.add_argument("--disable-dev-shm-usage")
            capabilities = edge_options.to_capabilities()
            capabilities["platform"] = ''
            return Edge(
                executable_path=LOCAL_EDGEDRIVER, capabilities=capabilities)
    elif browser_name == constants.Browser.SAFARI:
        arg_join = " ".join(sys.argv)
        if ("-n" in sys.argv) or ("-n=" in arg_join) or (arg_join == "-c"):
            # Skip if multithreaded
            raise Exception("Can't run Safari tests in multi-threaded mode!")
        safari_capabilities = _set_safari_capabilities()
        return webdriver.Safari(desired_capabilities=safari_capabilities)
    elif browser_name == constants.Browser.OPERA:
        try:
            if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_OPERADRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make operadriver"
                                  " executable: %s" % e)
            opera_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext,
                no_sandbox, disable_gpu, incognito, guest_mode, devtools,
                swiftshader, block_images, user_data_dir, extension_zip,
                extension_dir, servername, mobile_emulator,
                device_width, device_height, device_pixel_ratio)
            opera_options.headless = False  # No support for headless Opera
            return webdriver.Opera(options=opera_options)
        except Exception:
            return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(
                browser_name, downloads_path, headless, locale_code,
                proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
                disable_csp, enable_ws, enable_sync, use_auto_ext,
                no_sandbox, disable_gpu, incognito, guest_mode, devtools,
                swiftshader, block_images, user_data_dir, extension_zip,
                extension_dir, servername, mobile_emulator,
                device_width, device_height, device_pixel_ratio)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            elif not is_chromedriver_on_path():
                args = " ".join(sys.argv)
                if not ("-n" in sys.argv or "-n=" in args or args == "-c"):
                    # (Not multithreaded)
                    from seleniumbase.console_scripts import sb_install
                    sys_args = sys.argv  # Save a copy of current sys args
                    print("\nWarning: chromedriver not found. Installing now:")
                    sb_install.main(override="chromedriver")
                    sys.argv = sys_args  # Put back the original sys args
            if not headless or "linux" not in PLATFORM:
                return webdriver.Chrome(options=chrome_options)
            else:  # Running headless on Linux
                try:
                    return webdriver.Chrome(options=chrome_options)
                except Exception:
                    # Use the virtual display on Linux during headless errors
                    logging.debug("\nWarning: Chrome failed to launch in"
                                  " headless mode. Attempting to use the"
                                  " SeleniumBase virtual display on Linux...")
                    chrome_options.headless = False
                    return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                try:
                    make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                except Exception as e:
                    logging.debug("\nWarning: Could not make chromedriver"
                                  " executable: %s" % e)
            return webdriver.Chrome()
    else:
        raise Exception(
            "%s is not a valid browser option for this system!" % browser_name)
Exemple #29
0
    def init_driver(n):

        common_tools.save_log(statement.start_to_init_browser)
        chrome_capabilities = {
            'browserName': 'chrome',
            'chromeOptions': {
                'useAutomationExtension': False,
                'forceDevToolsScreenshot': True,
                'args': ['--disable-infobars']
                # 'args': ['--start-maximized', '--disable-infobars']
            }
        }
        ie11_capabilities = {
            'browserName': 'internet explorer',
            'ie_options': {
                'nativeEvents': False,
                'unexpectedAlertBehaviour': True,
                'ignoreProtectedModeSettings': True,
                'disable-popup-blocking': True,
                'enablePersistentHover': True,
                'ignoreZoomSetting': True,

            }
        }
        ie11_opts = Options()
        ie11_opts.ignore_protected_mode_settings = True
        ie11_opts.ignore_zoom_level = True
        ie11_opts.require_window_focus = False
        ie11_opts.native_events = False
        ie11_opts.persistent_hover = True
        # INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS

        ie11_cap = DesiredCapabilities.INTERNETEXPLORER.copy()
        ie11_cap["ignoreProtectedModeSettings"] = True
        # ie11_cap["IntroduceInstabilityByIgnoringProtectedModeSettings"] = True
        ie11_cap["nativeEvents"] = False
        # ie11_cap["browserFocus"] = False
        ie11_cap["ignoreZoomSetting"] = True
        ie11_cap["requireWindowFocus"] = False
        # ie11_cap["INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS"] = True

        if (n <= 40):
            driver_fire = webdriver.Edge()
            browser = 0
        elif (n <= 80):
            browser = 1
            profile = webdriver.FirefoxProfile()
            profile.set_preference('browser.download.dir', 'c:\\')
            profile.set_preference('browser.download.folderList', 2)
            profile.set_preference('browser.download.manager.showWhenStarting', False)
            profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
            driver_fire = webdriver.Firefox(timeout=settings.browser_launch_timeout, firefox_profile=profile)

        elif (n <=120):
            browser = 2
            driver_fire = webdriver.Chrome(desired_capabilities=chrome_capabilities)


        # elif (n <= 120):
        #     browser = 3
        #     driver_fire = webdriver.Ie(capabilities=ie11_capabilities)

        # driver_fire = webdriver.Ie(ie_options=ie11_opts)
        # # driver_fire = webdriver.Ie(capabilities=ie11_cap)
        # # driver_fire = webdriver.Ie(desired_capabilities=ie11_cap)
        # browser = 3

        driver = SmartEventFiringWebDriver(driver=driver_fire,
                                           event_listener=listener.SMART_Listener())

        return driver, browser
Exemple #30
0
from selenium import webdriver
from selenium.webdriver.ie.options import Options
from selenium.webdriver.common.keys import Keys
import time

caps = webdriver.DesiredCapabilities.INTERNETEXPLORER  # Test Comment
caps["IgnoreProtectedModeSettings"] = True              """Test Comment"""
caps["IgnoreZoomSetting"] = True

path="../driver/IEDriverServer.exe"
ie_options=Options()
ie_options.add_argument("--headless")

driver = webdriver.Ie(executable_path=path, desired_capabilities=caps, options=ie_options)

driver.get("https://www.google.com")

print(driver.title)

driver.find_element_by_name("q").send_keys("Automation Step by Step")
driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
time.sleep(2)
print(driver.title)
driver.close()
driver.quit()
Exemple #31
0
def function_driver(request):
    """
    driver注入
    @param request:
    @return:
    """
    browser = request.config.getoption("--browser")
    # 用于本地启动是否开启浏览器设置,根据命令行传参,browser_opt判断,默认open
    browser_opt = request.config.getoption("--browser_opt")
    print("获取命令行传参:{}".format(request.config.getoption("--browser")))
    type_driver = request.config.getoption("--type_driver")
    # 判断是本地还是远程
    if type_driver == "local":
        if browser_opt == "open":
            if browser == "chrome":
                # 跳过非安全的https安全校验
                chrome_options = CO()
                chrome_options.add_argument("--ignore-certificate-errors")
                driver = webdriver.Chrome(chrome_options=chrome_options)
            elif browser == "firefox":
                # 跳过非安全的https安全校验
                profile = FP()
                profile.accept_untrusted_certs = True
                driver = webdriver.Firefox(firefox_profile=profile)
            elif browser == "ie":
                # 跳过非安全的https安全校验
                capabilities = webdriver.DesiredCapabilities()
                capabilities['acceptSslCerts'] = True
                driver = webdriver.Ie(capabilities=capabilities)
            else:
                logging.info("发送错误浏览器参数:{}".format(browser))
        else:
            if browser == "chrome":
                # 不开启浏览器窗口,后台运行测试代码
                chrome_options = CO()
                chrome_options.add_argument('--headless')
                # 跳过非安全的https安全校验
                chrome_options.add_argument('--ignore-certificate-errors')
                driver = webdriver.Chrome(chrome_options=chrome_options)
            elif browser == "firefox":
                # 不开启浏览器窗口,后台运行测试代码
                firefox_options = FO()
                firefox_options.add_argument('--headless')
                # 跳过非安全的https安全校验
                profile = FP()
                profile.accept_untrusted_certs = True
                driver = webdriver.Firefox(firefox_options=firefox_options, firefox_profile=profile)
            elif browser == "ie":
                # 不开启浏览器窗口,后台运行测试代码
                ie_options = IEO()
                ie_options.add_argument('--headless')
                # 跳过非安全的https安全校验
                capabilities = webdriver.DesiredCapabilities()
                capabilities['acceptSslCerts'] = True
                driver = webdriver.Ie(ie_options=ie_options, capabilities=capabilities)
            else:
                logging.info("发送错误浏览器参数:{}".format(browser))
        yield driver
        # driver.close()
        driver.quit()
    elif type_driver == "remote":
        driver = Remote(command_executor=selenium_config["selenium_config"]["selenium_hub_url"],
                        desired_capabilities={'platform': 'ANY', 'browserName': browser, 'version': '',
                                              'javascriptEnabled': True})
        yield driver
        # driver.close()
        driver.quit()
    else:
        logging.error("driver参数传递错误,请检查参数:{}".format(type_driver))
def get_local_driver(
        browser_name, headless, proxy_string, proxy_auth,
        proxy_user, proxy_pass, user_agent, disable_csp):
    '''
    Spins up a new web browser and returns the driver.
    Can also be used to spin up additional browsers for the same test.
    '''
    downloads_path = download_helper.get_downloads_folder()
    download_helper.reset_downloads_folder()

    if browser_name == constants.Browser.FIREFOX:
        try:
            try:
                # Use Geckodriver for Firefox if it's on the PATH
                profile = _create_firefox_profile(
                    downloads_path, proxy_string, user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = True
                options = webdriver.FirefoxOptions()
                if headless:
                    options.add_argument('-headless')
                if LOCAL_GECKODRIVER and os.path.exists(LOCAL_GECKODRIVER):
                    make_driver_executable_if_not(LOCAL_GECKODRIVER)
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options,
                        executable_path=LOCAL_GECKODRIVER)
                else:
                    firefox_driver = webdriver.Firefox(
                        firefox_profile=profile,
                        capabilities=firefox_capabilities,
                        options=options)
            except WebDriverException:
                # Don't use Geckodriver: Only works for old versions of Firefox
                profile = _create_firefox_profile(
                    downloads_path, proxy_string, user_agent, disable_csp)
                firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
                firefox_capabilities['marionette'] = False
                firefox_driver = webdriver.Firefox(
                    firefox_profile=profile, capabilities=firefox_capabilities)
            return firefox_driver
        except Exception as e:
            if headless:
                raise Exception(e)
            return webdriver.Firefox()
    elif browser_name == constants.Browser.INTERNET_EXPLORER:
        if not IS_WINDOWS:
            raise Exception(
                "IE Browser is for Windows-based operating systems only!")
        from selenium.webdriver.ie.options import Options
        ie_options = Options()
        ie_options.ignore_protected_mode_settings = False
        ie_options.ignore_zoom_level = True
        ie_options.require_window_focus = False
        ie_options.native_events = True
        ie_options.full_page_screenshot = True
        ie_options.persistent_hover = True
        ie_capabilities = ie_options.to_capabilities()
        if LOCAL_IEDRIVER and os.path.exists(LOCAL_IEDRIVER):
            make_driver_executable_if_not(LOCAL_IEDRIVER)
            return webdriver.Ie(
                capabilities=ie_capabilities,
                executable_path=LOCAL_IEDRIVER)
        else:
            return webdriver.Ie(capabilities=ie_capabilities)
    elif browser_name == constants.Browser.EDGE:
        if not IS_WINDOWS:
            raise Exception(
                "Edge Browser is for Windows-based operating systems only!")
        edge_capabilities = DesiredCapabilities.EDGE.copy()
        if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
            make_driver_executable_if_not(LOCAL_EDGEDRIVER)
            return webdriver.Edge(
                capabilities=edge_capabilities,
                executable_path=LOCAL_EDGEDRIVER)
        else:
            return webdriver.Edge(capabilities=edge_capabilities)
    elif browser_name == constants.Browser.SAFARI:
        return webdriver.Safari()
    elif browser_name == constants.Browser.OPERA:
        if LOCAL_OPERADRIVER and os.path.exists(LOCAL_OPERADRIVER):
            make_driver_executable_if_not(LOCAL_OPERADRIVER)
            return webdriver.Opera(executable_path=LOCAL_OPERADRIVER)
        else:
            return webdriver.Opera()
    elif browser_name == constants.Browser.PHANTOM_JS:
        with warnings.catch_warnings():
            # Ignore "PhantomJS has been deprecated" UserWarning
            warnings.simplefilter("ignore", category=UserWarning)
            return webdriver.PhantomJS()
    elif browser_name == constants.Browser.GOOGLE_CHROME:
        try:
            chrome_options = _set_chrome_options(
                downloads_path, headless, proxy_string, proxy_auth,
                proxy_user, proxy_pass, user_agent, disable_csp)
            if headless:
                # Headless Chrome doesn't support extensions, which are
                # required when using a proxy server that has authentication.
                # Instead, base_case.py will use PyVirtualDisplay when not
                # using Chrome's built-in headless mode. See link for details:
                # https://bugs.chromium.org/p/chromium/issues/detail?id=706008
                if not proxy_auth:
                    chrome_options.add_argument("--headless")
                chrome_options.add_argument("--disable-gpu")
                chrome_options.add_argument("--no-sandbox")
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(
                    executable_path=LOCAL_CHROMEDRIVER, options=chrome_options)
            else:
                return webdriver.Chrome(options=chrome_options)
        except Exception as e:
            if headless:
                raise Exception(e)
            if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
                make_driver_executable_if_not(LOCAL_CHROMEDRIVER)
                return webdriver.Chrome(executable_path=LOCAL_CHROMEDRIVER)
            else:
                return webdriver.Chrome()
    else:
        raise Exception(
            "%s is not a valid browser option for this system!" % browser_name)