您可以運用功能做為選項,自訂及設定 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
,您必須知道功能名稱和其採用的值類型。請按這裡查看完整清單。
Python
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)
Ruby
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");
如要建立自訂設定檔,只需透過指令列或 ChromeDriver 執行 Chrome,並將 user-data-dir
切換鈕設為新目錄即可。如果路徑不存在,Chrome 會在指定位置建立新的設定檔。然後您可以視需要修改設定檔設定,ChromeDriver 日後將可使用該設定檔。在瀏覽器中開啟 chrome://version,即可查看 Chrome 目前使用的設定檔。
啟動 Chrome 最大化模式
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
在非標準位置使用 Chrome 執行檔
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
封鎖對話方塊視窗
根據預設,ChromeDriver 會將 Chrome 設為允許彈出式視窗。如要封鎖彈出式視窗 (也就是在不受 ChromeDriver 控管的情況下還原 Chrome 的一般行為),請按照下列步驟操作:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
Arrays.asList("disable-popup-blocking"));
設定下載目錄
您可以使用下列程式碼設定 Chrome 將檔案下載到特定目錄。不過,請留意以下幾點:
- Chrome 禁止使用特定目錄下載。具體來說,您無法使用桌面資料夾做為下載目錄。在 Linux 中,你也無法使用主目錄下載。由於禁止目錄的確切清單可能會隨時變動,因此建議您使用對系統沒有特殊意義的目錄。
- ChromeDriver 不會自動等待下載作業完成。如果太早呼叫 drive.quit(),Chrome 可能會在下載完成前終止。
- 相對路徑不一定有效。為獲得最佳結果,請改用完整路徑。
- 在 Windows 上,請使用「做為路徑分隔符使用「/」並不可靠的 Windows 系統。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);
已辨識的功能
請參閱 Selenium 說明文件和 W3C WebDriver 標準 ChromeDriver 接受的功能。這裡我們只列出 Chrome 專用的 即便沒有技術背景,也能因這些工具的功能而受益
ChromeOptions
個物件
大多數的 Chrome 專屬功能都可透過 ChromeOptions
公開
物件。在某些語言中,此方法是由 ChromeOptions
類別實作。於
儲存在其他語言的 goog:chromeOptions
字典中,位於
所需的功能
perfLoggingPrefs
個物件
PerfLoggingPrefs 字典格式如下 (所有索引鍵均為選用):
名稱 | 類型 | 預設 | 說明 |
---|---|---|---|
enableNetwork
|
布林值 | true | 是否從聯播網網域收集事件。 |
enablePage
|
布林值 | true | 是否從網頁網域收集事件。 |
traceCategories
|
字串 | (空白) | 要收集追蹤事件的 Chrome 追蹤類別字串 (以半形逗號分隔)。未指定或空白字串會停用追蹤功能。 |
bufferUsageReportingInterval
|
正整數 | 1000 | 開發人員工具追蹤緩衝區使用事件的間隔毫秒數。舉例來說,如果為 1000,則每秒一次,開發人員工具會回報追蹤記錄緩衝區空間。如果報表顯示緩衝區使用情形為 100%,就會發出警告。 |
傳回的功能
這份清單列出了 Chrome 專用的所有傳回功能。(亦即,在建立新的工作階段時,ChromeDriver 傳回的內容)
名稱 | 類型 | 說明 |
---|---|---|
chrome.chromedriverVersion
|
字串 | ChromeDriver 版本 |
userDataDir
|
字串 | Chrome 所使用的使用者資料目錄路徑;請注意,這個畫面位於「chrome」字典 |