zoukankan      html  css  js  c++  java
  • Chrome Capabilities & ChromeOptions

    Capabilities & ChromeOptions

    Capabilities are options that you can use to customize and configure a ChromeDriver session. This page documents all ChromeDriver supported capabilities and how to use them.

    There are two ways to specify capabilities. 

    1. The first is to use the ChromeOptions class. 
    2. If your client library does not have a ChromeOptions class (like the selenium ruby client), you can specify the capabilities directly as part of the DesiredCapabilities.

    Using the ChromeOptions class

    You can create an instance of ChromeOptions, which has convenient methods for setting ChromeDriver-specific capabilities. You can pass the ChromeOptions object directly into the ChromeDriver constructor:
    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("/path/to/extension.crx"));
    ChromeDriver driver = new ChromeDriver(options);

    Alternatively, you can add the options to an already existing DesiredCapabilities object, which is useful when need to specify other WebDriver capabilities not specific to ChromeDriver.

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    // Add the WebDriver proxy capability.
    Proxy proxy = new Proxy();
    proxy.setHttpProxy("myhttpproxy:3337");
    capabilities.setCapability("proxy", proxy);
    
    // Add ChromeDriver-specific capabilities through ChromeOptions.
    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("/path/to/extension.crx"));
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    ChromeDriver driver = new ChromeDriver(capabilities);

    Using DesiredCapabilities directly

    The ChromeOptions class uses DesiredCapabilities underneath. To use DesiredCapabilities directly, you need to know the name of the capability and the type of value it takes. See the full list further below.

    Java
    Map<String, Object> chromeOptions = new Map<String, Object>();
    chromeOptions.put("binary", "/usr/lib/chromium-browser/chromium-browser");
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
    WebDriver driver = new ChromeDriver(capabilities);
    Ruby
    caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => [ "--disable-web-security" ]})
    driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub' desired_capabilities: caps

    Common use cases

    Use custom profile (also called user data directory)
    By default, ChromeDriver will create a new temporary profile for each session. At times you may want to set special preferences or just use a custom profile altogether. If the former, you can use the 'chrome.prefs' capability (described later below) to specify preferences that will be applied after Chrome starts. If the latter, you can use the user-data-dir Chrome command-line switch to tell Chrome which profile to use:
    ChromeOptions options = new ChromeOptions();
    options.addArguments("user-data-dir=/path/to/your/custom/profile");

    You can create your own custom profile by just running Chrome (on the command-line or through ChromeDriver) with the user-data-dir switch set to some new directory. If the path doesn't exist, Chrome will create a new profile in the specified location. You can then modify the profile settings as desired, and ChromeDriver can use the profile in the future. Open chrome://version in the browser to see what profile Chrome is using.

    Start Chrome maximized
    ChromeOptions options = new ChromeOptions();
    options.addArguments("start-maximized");
    Using a Chrome executable in a non-standard location
    ChromeOptions options = new ChromeOptions();
    options.setBinary("/path/to/other/chrome/binary");
    Set a Chrome preference
    ChromeOptions options = new ChromeOptions();
    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.default_content_settings.popups", 0);
    options.setExperimentalOption("prefs", prefs);

    List of recognized capabilities

    This is a list of all the WebDriver-standard capabilities that ChromeDriver supports:

    Proxy object

    See http://code.google.com/p/selenium/wiki/DesiredCapabilities#Proxy_JSON_Object

    loggingPrefs object

    See https://code.google.com/p/selenium/wiki/DesiredCapabilities#JSON_object

    chromeOptions object
    This is a list of all the Chrome-specific desired capabilities, which all are under the chromeOptions dictionary. 

    If possible, use the ChromeOptions class instead of specifying these directly.

    Name
    Type
    Default
    Description

    args
    list of strings 
    List of command-line arguments to use when starting Chrome. Arguments with an associated value should be separated by a '=' sign (e.g., ['start-maximized', 'user-data-dir=/tmp/temp_profile']). See here for a list of Chrome arguments.

    binary
    string 
    Path to the Chrome executable to use (on Mac OS X, this should be the actual binary, not just the app. e.g., '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')

    extensions
    list of strings 
    A list of Chrome extensions to install on startup. Each item in the list should be a base-64 encoded packed Chrome extension (.crx)

    localState
    dictionary
    A dictionary with each entry consisting of the name of the preference and its value. These preferences are applied to the Local State file in the user data folder.

    prefs
    dictionary
    A dictionary with each entry consisting of the name of the preference and its value. These preferences are only applied to the user profile in use. See the 'Preferences' file in Chrome's user data directory for examples.

    detach
    boolean
    false 
    If false, Chrome will be quit when ChromeDriver is killed, regardless of whether the session is quit. If true, Chrome will only be quit if the session is quit (or closed). Note, if true, and the session is not quit, ChromeDriver cannot clean up the temporary user data directory that the running Chrome instance is using.

    debuggerAddress
    string 
    An address of a Chrome debugger server to connect to, in the form of <hostname/ip:port>, e.g. '127.0.0.1:38947'

    excludeSwitches
    list of strings 
    List of Chrome command line switches to exclude that ChromeDriver by default passes when starting Chrome.  Do not prefix switches with --.

    minidumpPath
    string 
    Directory to store Chrome minidumps . (Supported only on Linux.)

    mobileEmulation
    dictionary
    A dictionary with either a value for “deviceName,” or values for “deviceMetrics” and “userAgent.” Refer to Mobile Emulation for more information.

    perfLoggingPrefs
    dictionary
    An optional dictionary that specifies performance logging preferences. See below for more information.

    windowTypes
    list of strings
    A list of window types that will appear in the list of window handles. For access to <webview> elements, include "webview" in this list.

    perfLoggingPrefs object

    The perfLoggingPrefs dictionary has the following format (all keys are optional):

    Name
    Type
    Default
    Description

    enableNetwork
    boolean
    true
    Whether or not to collect events from Network domain.

    enablePage
    boolean
    true
    Whether or not to collect events from Page domain.

    enableTimeline
    boolean
    true (false if tracing is enabled)
    Whether or not to collect events from Timeline domain. Note: when tracing is enabled, Timeline domain is implicitly disabled, unless enableTimeline is explicitly set to true.

    tracingCategories
    string
    (empty)
    A comma-separated string of Chrome tracing categories for which trace events should be collected. An unspecified or empty string disables tracing.

    bufferUsageReportingInterval
    positive integer
    1000
    The requested number of milliseconds between DevTools trace buffer usage events. For example, if 1000, then once per second, DevTools will report how full the trace buffer is. If a report indicates the buffer usage is 100%, a warning will be issued.

    Returned Capabilities

    This is a list of all the Chrome-specific returned capabilities. (i.e., what ChromeDriver returns when you create a new session)

    Name
    Type
    Description

    chrome.chromedriverVersion
    string 
    version of ChromeDriver

    userDataDir
    string 
    path to user data directory that Chrome is using; note, this is inside a 'chrome' dictionary

    ChromeDriver server command line arguments

    Run chromedriver --help to see command line arguments for your version.

  • 相关阅读:
    一个简单的linux线程池(转-wangchenxicool)
    Linux下获得系统时间的C语言实现
    C语言实现简单线程池(转-Newerth)
    C语言实现Web客户端(转-kungstriving)
    C语言实现的Web服务器(转-kungstriving)
    linux和window下mkdir函数问题(转-锦曦月)
    linux C 获取当前目录的实现(转-Blossom)
    linux C之access函数(转-追梦的小鸟)
    Linux C 创建目录函数mkdir相关(转-清新居士)
    50个C/C++源代码网站(转-清风小阁)
  • 原文地址:https://www.cnblogs.com/zhang-pengcheng/p/6081007.html
Copyright © 2011-2022 走看看