def get_remote_driver(browser_name, headless, servername, port, proxy_string, proxy_auth, proxy_user, proxy_pass, cap_file): downloads_path = download_helper.get_downloads_folder() download_helper.reset_downloads_folder() address = "http://%s:%s/wd/hub" % (servername, port) desired_caps = {} if cap_file: desired_caps = capabilities_parser.get_desired_capabilities(cap_file) if browser_name == constants.Browser.GOOGLE_CHROME: chrome_options = _set_chrome_options(downloads_path, proxy_string, proxy_auth, proxy_user, proxy_pass) if headless: if not proxy_auth: # 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 chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--no-sandbox") capabilities = chrome_options.to_capabilities() for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.FIREFOX: 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ({ 'args': ['-headless'] }) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities address = "http://%s:%s/wd/hub" % (servername, port) return webdriver.Remote(command_executor=address, desired_capabilities=capabilities, browser_profile=profile) 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ({ 'args': ['-headless'] }) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities return webdriver.Remote(command_executor=address, desired_capabilities=capabilities, browser_profile=profile) elif browser_name == constants.Browser.INTERNET_EXPLORER: capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.EDGE: capabilities = webdriver.DesiredCapabilities.EDGE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.SAFARI: capabilities = webdriver.DesiredCapabilities.SAFARI for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.OPERA: capabilities = webdriver.DesiredCapabilities.OPERA for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.PHANTOM_JS: capabilities = webdriver.DesiredCapabilities.PHANTOMJS for key in desired_caps.keys(): capabilities[key] = desired_caps[key] with warnings.catch_warnings(): # Ignore "PhantomJS has been deprecated" UserWarning warnings.simplefilter("ignore", category=UserWarning) return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.ANDROID: capabilities = webdriver.DesiredCapabilities.ANDROID for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPHONE: capabilities = webdriver.DesiredCapabilities.IPHONE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPAD: capabilities = webdriver.DesiredCapabilities.IPAD for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.REMOTE: return webdriver.Remote(command_executor=address, desired_capabilities=desired_caps)
def get_remote_driver( browser_name, headless, locale_code, servername, port, proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent, cap_file, cap_string, 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, test_id, mobile_emulator, device_width, device_height, device_pixel_ratio): downloads_path = download_helper.get_downloads_folder() download_helper.reset_downloads_folder() address = "http://%s:%s/wd/hub" % (servername, port) desired_caps = {} extra_caps = {} if cap_file: from seleniumbase.core import capabilities_parser desired_caps = capabilities_parser.get_desired_capabilities(cap_file) if cap_string: try: extra_caps = json.loads(cap_string) except Exception as e: p1 = "Invalid input format for --cap-string:\n %s" % e p2 = "The --cap-string input was: %s" % cap_string p3 = "Enclose cap-string in SINGLE quotes; keys in DOUBLE quotes." p4 = ("""Here's an example of correct cap-string usage:\n """ """--cap-string='{"browserName":"chrome","name":"test1"}'""") raise Exception("%s\n%s\n%s\n%s" % (p1, p2, p3, p4)) for cap_key in extra_caps.keys(): desired_caps[cap_key] = extra_caps[cap_key] if cap_file or cap_string: if "name" in desired_caps.keys(): if desired_caps["name"] == "*": desired_caps["name"] = test_id if browser_name == constants.Browser.GOOGLE_CHROME: 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) capabilities = chrome_options.to_capabilities() for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.FIREFOX: 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ( {'args': ['-headless']}) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities warnings.simplefilter("ignore", category=DeprecationWarning) return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, browser_profile=profile, keep_alive=True) except WebDriverException: # Don't use Geckodriver: Only works for old versions of Firefox profile = _create_firefox_profile( downloads_path, locale_code, proxy_string, user_agent, disable_csp) firefox_capabilities = DesiredCapabilities.FIREFOX.copy() firefox_capabilities['marionette'] = False if headless: firefox_capabilities['moz:firefoxOptions'] = ( {'args': ['-headless']}) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, browser_profile=profile, keep_alive=True) elif browser_name == constants.Browser.INTERNET_EXPLORER: capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.EDGE: capabilities = webdriver.DesiredCapabilities.EDGE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.SAFARI: capabilities = webdriver.DesiredCapabilities.SAFARI for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.OPERA: capabilities = webdriver.DesiredCapabilities.OPERA for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.PHANTOM_JS: capabilities = webdriver.DesiredCapabilities.PHANTOMJS for key in desired_caps.keys(): capabilities[key] = desired_caps[key] with warnings.catch_warnings(): # Ignore "PhantomJS has been deprecated" UserWarning warnings.simplefilter("ignore", category=UserWarning) return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.ANDROID: capabilities = webdriver.DesiredCapabilities.ANDROID for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.IPHONE: capabilities = webdriver.DesiredCapabilities.IPHONE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.IPAD: capabilities = webdriver.DesiredCapabilities.IPAD for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, keep_alive=True) elif browser_name == constants.Browser.REMOTE: return webdriver.Remote( command_executor=address, desired_capabilities=desired_caps, keep_alive=True)
def get_remote_driver(browser_name, headless, servername, port, proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent, cap_file, 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): downloads_path = download_helper.get_downloads_folder() download_helper.reset_downloads_folder() address = "http://%s:%s/wd/hub" % (servername, port) desired_caps = {} if cap_file: desired_caps = capabilities_parser.get_desired_capabilities(cap_file) if browser_name == constants.Browser.GOOGLE_CHROME: 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) capabilities = chrome_options.to_capabilities() for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.FIREFOX: 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ({ 'args': ['-headless'] }) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities warnings.simplefilter("ignore", category=DeprecationWarning) return webdriver.Remote(command_executor=address, desired_capabilities=capabilities, browser_profile=profile) 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ({ 'args': ['-headless'] }) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities return webdriver.Remote(command_executor=address, desired_capabilities=capabilities, browser_profile=profile) elif browser_name == constants.Browser.INTERNET_EXPLORER: capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.EDGE: capabilities = webdriver.DesiredCapabilities.EDGE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.SAFARI: capabilities = webdriver.DesiredCapabilities.SAFARI for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.OPERA: capabilities = webdriver.DesiredCapabilities.OPERA for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.PHANTOM_JS: capabilities = webdriver.DesiredCapabilities.PHANTOMJS for key in desired_caps.keys(): capabilities[key] = desired_caps[key] with warnings.catch_warnings(): # Ignore "PhantomJS has been deprecated" UserWarning warnings.simplefilter("ignore", category=UserWarning) return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.ANDROID: capabilities = webdriver.DesiredCapabilities.ANDROID for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPHONE: capabilities = webdriver.DesiredCapabilities.IPHONE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPAD: capabilities = webdriver.DesiredCapabilities.IPAD for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote(command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.REMOTE: return webdriver.Remote(command_executor=address, desired_capabilities=desired_caps)
def get_remote_driver( browser_name, headless, servername, port, proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent, cap_file, disable_csp): downloads_path = download_helper.get_downloads_folder() download_helper.reset_downloads_folder() address = "http://%s:%s/wd/hub" % (servername, port) desired_caps = {} if cap_file: desired_caps = capabilities_parser.get_desired_capabilities(cap_file) if browser_name == constants.Browser.GOOGLE_CHROME: chrome_options = _set_chrome_options( downloads_path, headless, proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent, disable_csp) if headless: if not proxy_auth: # 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 chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--no-sandbox") capabilities = chrome_options.to_capabilities() for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.FIREFOX: 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ( {'args': ['-headless']}) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities address = "http://%s:%s/wd/hub" % (servername, port) return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, browser_profile=profile) 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 if headless: firefox_capabilities['moz:firefoxOptions'] = ( {'args': ['-headless']}) for key in desired_caps.keys(): firefox_capabilities[key] = desired_caps[key] capabilities = firefox_capabilities return webdriver.Remote( command_executor=address, desired_capabilities=capabilities, browser_profile=profile) elif browser_name == constants.Browser.INTERNET_EXPLORER: capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.EDGE: capabilities = webdriver.DesiredCapabilities.EDGE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.SAFARI: capabilities = webdriver.DesiredCapabilities.SAFARI for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.OPERA: capabilities = webdriver.DesiredCapabilities.OPERA for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.PHANTOM_JS: capabilities = webdriver.DesiredCapabilities.PHANTOMJS for key in desired_caps.keys(): capabilities[key] = desired_caps[key] with warnings.catch_warnings(): # Ignore "PhantomJS has been deprecated" UserWarning warnings.simplefilter("ignore", category=UserWarning) return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.ANDROID: capabilities = webdriver.DesiredCapabilities.ANDROID for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPHONE: capabilities = webdriver.DesiredCapabilities.IPHONE for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.IPAD: capabilities = webdriver.DesiredCapabilities.IPAD for key in desired_caps.keys(): capabilities[key] = desired_caps[key] return webdriver.Remote( command_executor=address, desired_capabilities=capabilities) elif browser_name == constants.Browser.REMOTE: return webdriver.Remote( command_executor=address, desired_capabilities=desired_caps)