功能是可用於自訂及設定 ChromeDriver 工作階段的選項。本頁面將說明 ChromeDriver 支援的所有功能,以及如何使用這些功能。
WebDriver 語言 API 提供將功能傳遞至 ChromeDriver 的方法。具體機制會因語言而異,但大多數語言都會使用下列一或多個機制:
- 使用
ChromeOptions
類別。Java、Python 等語言均支援此功能。 - 使用
DesiredCapabilities
類別。Python、Ruby 等支援此功能。雖然 Java 也支援此功能,但在 Java 中使用此功能已淘汰。
使用 ChromeOptions 類別
您可以建立 ChromeOptions
的例項,其中提供方便的方法,可設定 ChromeDriver 專屬功能。接著,您可以將 ChromeOptions
物件傳遞至 ChromeDriver 建構函式:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
自 Selenium 3.6.0 版起,Java 中的 ChromeOptions
類別也實作了 Capabilities
介面,可讓您指定非 ChromeDriver 專屬的其他 WebDriver 功能。
ChromeOptions options = new ChromeOptions();
// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);
// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
使用 DesiredCapabilities
如要使用 DesiredCapabilities
,您必須知道功能的名稱和所需值的類型。請參閱完整清單。
Python
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)
小茹
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
常見用途
使用自訂設定檔
根據預設,ChromeDriver 會為每個工作階段建立新的臨時設定檔。您可以設定特殊偏好設定,也可以直接使用自訂設定檔 (也稱為使用者資料目錄)。
如果使用暫時性設定檔,您可以使用 chrome.prefs
功能指定在 Chrome 啟動後套用的偏好設定。如要使用自訂設定檔,您可以使用 user-data-dir
Chrome 命令列切換鈕,告訴 Chrome 要使用哪個設定檔:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
在指令列上執行 Chrome,或使用 ChromeDriver,並將 user-data-dir
切換鍵設為某個新目錄,即可建立自訂設定檔。
如果路徑不存在,Chrome 會在指定位置建立新設定檔。接著,您可以修改設定檔設定,ChromeDriver 日後就能使用該設定檔。在瀏覽器中開啟 chrome://version
,查看 Chrome 使用的設定檔。
以最大化方式啟動 Chrome
使用 start-maximized
切換鈕啟動 Chrome 並將視窗最大化:
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
在非標準位置使用 Chrome 可執行檔
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
封鎖對話方塊視窗
根據預設,ChromeDriver 會將 Chrome 設為允許彈出式視窗。如要封鎖彈出式視窗,並在 Chrome 未受 ChromeDriver 控制時還原正常的 Chrome 行為,請執行下列操作:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
Arrays.asList("disable-popup-blocking"));
設定下載目錄
您可以使用下列程式碼,將 Chrome 設定為將檔案下載至特定目錄。不過,請注意以下幾點:
- Chrome 不允許使用特定目錄下載檔案。特別要注意,您無法使用電腦桌面資料夾做為下載目錄。在 Linux 上,您無法使用主目錄進行下載。禁止的目錄清單可能會有所變動,因此建議您使用對系統沒有特殊意義的專屬目錄。
- ChromeDriver 不會自動等待下載作業完成。如果您過早呼叫
driver.quit()
,Chrome 可能會在下載完成前終止。 - 為獲得最佳效果,請使用完整路徑,因為相對路徑不一定有效。
- 在 Windows 上使用
\` as path separators.
/` 不穩定。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);
已辨識的功能
如要瞭解 ChromeDriver 接受的標準功能,請參閱 Selenium 說明文件和 W3C WebDriver 標準。以下列出 Chrome 專屬功能。
ChromeOptions
個物件
大部分 Chrome 專屬功能都會透過 ChromeOptions
物件公開。在某些語言中,這些類別是由 ChromeOptions
類別實作。在其他語言中,這些字詞會儲存在所選功能的 goog:chromeOptions
字典中。
perfLoggingPrefs
個物件
perfLoggingPrefs
字典的格式如下。所有鍵皆為選用項目:
傳回的功能
以下是所有 Chrome 專屬傳回功能的清單,也就是 ChromeDriver 在您建立新工作階段時傳回的內容。