您可以運用功能來自訂及設定 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)
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");
如要建立自訂設定檔,只要執行 Chrome (使用指令列或透過 ChromeDriver) 並將 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 不會自動等待下載作業完成。如果您太快呼叫 Driver.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);
已識別的功能
如要瞭解 ChromeDriver 接受的標準功能,請參閱 Selenium 說明文件和 W3C WebDriver 標準。這裡只列出 Chrome 專屬的功能
ChromeOptions
個物件
大部分 Chrome 專屬功能都會透過 ChromeOptions
物件公開。在某些語言中,這是由 ChromeOptions
類別實作。而在其他語言中,系統會使用所需功能儲存在 goog:chromeOptions
字典中。
perfLoggingPrefs
個物件
PerfLoggingPrefs 字典採用下列格式 (所有索引鍵均為選填):
名稱 | 類型 | 預設 | 說明 |
---|---|---|---|
enableNetwork
|
boolean | true | 是否從網路網域收集事件。 |
enablePage
|
boolean | true | 是否要從網頁網域收集事件。 |
traceCategories
|
字串 | (空白) | 要收集追蹤事件的 Chrome 追蹤類別字串 (以半形逗號分隔)。如果未指定或空白字串,系統會停用追蹤功能。 |
bufferUsageReportingInterval
|
正整數 | 1000 | 在開發人員工具追蹤緩衝區使用事件之間要求的毫秒數。舉例來說,如果值為 1000,然後每秒一次,開發人員工具就會回報追蹤記錄緩衝區的完整程度。如果報表指出緩衝區用量為 100%,系統就會發出警告。 |
傳回的功能
這是所有 Chrome 特有的功能清單。(也就是在建立新工作階段時,ChromeDriver 傳回的內容)
名稱 | 類型 | 說明 |
---|---|---|
chrome.chromedriverVersion
|
string | ChromeDriver 版 |
userDataDir
|
string | Chrome 目前使用的使用者資料目錄路徑;請注意,這些資料位於「chrome」字典中 |