Chromium
isAlertOpen
是否目前有簡易對話框開啟。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.isAlertOpen()
範例
console.log(browser.isAlertOpen()); // outputs: false
browser.execute('window.alert()');
console.log(browser.isAlertOpen()); // outputs: true
回傳值
- <Boolean>
isAlertOpen
: 根據是否有簡易對話框顯示,回傳true
或false
。
isAutoReporting
是否應自動引發瀏覽器記錄中的錯誤。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.isAutoReporting()
回傳值
- <Boolean>
isAutoReporting
: 根據是否啟用自動回報,回傳true
或false
。
setAutoReporting
切換是否要針對所有後續命令 (一旦啟用) 回傳帶有第一個瀏覽器錯誤 (例如,因 403/404 回應而無法載入資源) 的未知錯誤回應。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.setAutoReporting(enabled)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
enabled | boolean | 如果應啟用自動回報,則為 true ;使用 false 停用先前啟用的自動回報。 |
範例
// Enable auto reporting first thing after session was initiated with empty browser logs
console.log(browser.setAutoReporting(true)); // outputs: null
// Upon requesting an non-existing resource it will abort execution due to thrown unknown error
browser.url('https://webdriverio.dev.org.tw/img/404-does-not-exist.png');
// During the session do some operations which populate the browser logs
browser.url('https://webdriverio.dev.org.tw/img/404-does-not-exist.png');
browser.url('https://webdriverio.dev.org.tw/403/no-access');
// Enable auto reporting which throws an unknown error for first browser log (404 response)
browser.setAutoReporting(true);
回傳值
- <Object|Null>
firstBrowserError
: 如果在執行此命令之前已發生第一個瀏覽器錯誤,則會擲回未知錯誤作為回應,此回應是一個具有「message」鍵,用來描述第一個瀏覽器錯誤的物件。否則,成功時會傳回null
。
isLoading
判斷活動視窗控制代碼的載入狀態。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.isLoading()
範例
console.log(browser.isLoading()); // outputs: false
browser.newWindow('https://webdriverio.dev.org.tw');
console.log(browser.isLoading()); // outputs: true
回傳值
- <Boolean>
isLoading
: 根據活動視窗控制代碼是否正在載入,回傳true
或false
。
takeHeapSnapshot
取得目前執行內容的堆積快照。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.takeHeapSnapshot()
回傳值
- <Object>
heapSnapshot
: 堆積快照的 JSON 表示法。可以透過將檔案載入 Chrome 開發人員工具中來檢查。
getNetworkConnection
取得網路模擬的連線類型。只有在遠端以設定為 true
的 networkConnectionEnabled
功能回覆時,此命令才適用。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.getNetworkConnection()
範例
const browser = remote({
capabilities: {
browserName: 'chrome',
'goog:chromeOptions': {
// Network emulation requires device mode, which is only enabled when mobile emulation is on
mobileEmulation: { deviceName: 'iPad' },
},
}
});
console.log(browser.getNetworkConnection()); // outputs: 6 (Both Wi-Fi and data)
回傳值
- <Number>
connectionType
: 表示網路連線類型的位元遮罩。飛航模式 (1
)、僅限 Wi-Fi (2
)、Wi-Fi 和數據 (6
)、4G (8
)、3G (10
)、2G (20
)。預設情況下,會啟用 Wi-Fi 和數據。
setNetworkConnection
變更網路連線的連線類型。只有在遠端以設定為 true
的 networkConnectionEnabled
功能回覆時,此命令才適用。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.setNetworkConnection(parameters)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
參數 | 物件 | 包含 ConnectionType 的物件,將位元遮罩設定為物件中 type 鍵的值。飛航模式 (1 )、僅限 Wi-Fi (2 )、Wi-Fi 和數據 (6 )、4G (8 )、3G (10 )、2G (20 )。 |
範例
const browser = remote({
capabilities: {
browserName: 'chrome',
'goog:chromeOptions': {
// Network emulation requires device mode, which is only enabled when mobile emulation is on
mobileEmulation: { deviceName: 'iPad' },
},
}
});
console.log(browser.setNetworkConnection({ type: 1 })); // outputs: 1 (Airplane Mode)
回傳值
- <Number>
connectionType
: 表示網路連線類型的位元遮罩。值應與物件中指定的type
相符,但裝置可能無法使用要求的網路連線類型。
getNetworkConditions
取得用於模擬的目前網路條件。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.getNetworkConditions()
回傳值
- <Object>
networkConditions
: 包含offline
、latency
、download_throughput
和upload_throughput
的網路條件物件。必須先設定網路條件才能擷取。
setNetworkConditions
透過限制連線,設定用於模擬的網路條件。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.setNetworkConditions(network_conditions, network_name)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
network_conditions | 物件 | 包含 latency 、throughput (或 download_throughput /upload_throughput ) 和 offline (選用) 的網路條件物件。 |
network_name 選用 | 字串 | 網路限制預設的名稱。GPRS 、Regular 2G 、Good 2G 、Regular 3G 、Good 3G 、Regular 4G 、DSL 、WiFi 或 No throttling 以停用。指定預設值時,不採用在第一個引數中傳遞的值。 |
範例
// Use different download (25kb/s) and upload (50kb/s) throughput values for throttling with a latency of 1000ms
browser.setNetworkConditions({ latency: 1000, download_throughput: 25600, upload_throughput: 51200 });
// Force disconnected from network by setting 'offline' to true
browser.setNetworkConditions({ latency: 0, throughput: 0, offline: true });
// When preset name (e.g. 'DSL') is specified it does not respect values in object (e.g. 'offline')
browser.setNetworkConditions({ latency: 0, throughput: 0, offline: true }, 'DSL');
// Best practice for specifying network throttling preset is to use an empty object
browser.setNetworkConditions({}, 'Good 3G');
deleteNetworkConditions
停用可能已設定的任何網路限制。相當於設定 No throttling
預設。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.deleteNetworkConditions()
sendCommand
將命令傳送至 DevTools 偵錯工具。
如需可用命令及其參數的清單,請參閱Chrome DevTools Protocol Viewer。
非官方且未記錄的 Chromium 命令。有關此命令的更多資訊,請參閱這裡。
用法
browser.sendCommand(cmd, params)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
cmd | 字串 | 指令名稱 (例如 Browser.close )。 |
params | 物件 | 指令的參數。如果指令沒有參數,請指定一個空物件。 |
sendCommandAndGetResult
傳送指令至 DevTools 除錯器並等待結果。
如需可用命令及其參數的清單,請參閱Chrome DevTools Protocol Viewer。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.sendCommandAndGetResult(cmd, params)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
cmd | 字串 | 會回傳結果的指令名稱 (例如 Network.getAllCookies )。 |
params | 物件 | 指令的參數。如果指令沒有參數,請指定一個空物件。 |
回傳
- <*>
result
: 您的指令的回傳值,或是造成指令失敗的錯誤原因。
file
上傳檔案至執行瀏覽器的遠端機器。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.file(file)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
file | 字串 | Base64 編碼的 zip 壓縮檔,其中包含要上傳的單一檔案。如果 base64 編碼的資料並非 zip 壓縮檔,或是壓縮檔包含多個檔案,則會拋出未知錯誤。 |
回傳
- <String>
path
: 遠端機器上已上傳檔案的絕對路徑。
launchChromeApp
透過指定的 ID 啟動 Chrome 應用程式。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.launchChromeApp(id)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
id | 字串 | 要啟動的應用程式的擴充功能 ID,定義於 chrome://extensions。 |
範例
import fs from 'fs'
const browser = remote({
capabilities: {
browserName: 'chrome',
'goog:chromeOptions': {
// Install upon starting browser in order to launch it
extensions: [
// Entry should be a base64-encoded packed Chrome app (.crx)
fs.readFileSync('/absolute/path/app.crx').toString('base64')
]
}
}
});
browser.launchChromeApp('aohghmighlieiainnegkcijnfilokake')); // Google Docs (https://chrome.google.com/webstore/detail/docs/aohghmighlieiainnegkcijnfilokake)
getElementValue
擷取指定表單控制元素的值。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.getElementValue(elementId)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
elementId | 字串 | 要取得值的元素 ID |
回傳
- <String|Null>
value
: 元素的目前值。如果指定的元素不是表單控制元素,則會回傳null
。
elementHover
啟用元素的懸停狀態,該狀態會在下次互動時重設。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.elementHover(elementId)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
elementId | 字串 | 要懸停的元素 ID |
touchPinch
觸發捏合縮放效果。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.touchPinch(x, y, scale)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
x | 數字 | 捏合的 x 座標位置 |
y | 數字 | 捏合的 y 座標位置 |
scale | 數字 | 捏合縮放比例 |
freeze
凍結目前的頁面。頁面生命週期 API 的擴充功能。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.freeze()
resume
恢復目前的頁面。頁面生命週期 API 的擴充功能。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.resume()
getCastSinks
回傳 Chrome 媒體路由器可用的投放接收器 (投放裝置) 清單。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.getCastSinks()
回傳
- <string[]>
sinks
: 可用接收器清單。
selectCastSink
選取一個投放接收器 (投放裝置) 作為媒體路由器意圖 (連線或播放) 的接收者。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.selectCastSink(sinkName)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
sinkName | 字串 | 目標裝置的名稱。 |
startCastTabMirroring
在指定的裝置上啟動目前瀏覽器分頁的分頁鏡像。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.startCastTabMirroring(sinkName)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
sinkName | 字串 | 目標裝置的名稱。 |
getCastIssueMessage
如果投放工作階段有任何問題,則回傳錯誤訊息。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.getCastIssueMessage()
回傳
- <String>
message
: 錯誤訊息 (若有的話)。
stopCasting
如果已連線,則停止從媒體路由器向指定裝置進行投放。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.stopCasting(sinkName)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
sinkName | 字串 | 目標裝置的名稱。 |
shutdown
關閉 ChromeDriver 處理序,並因此終止所有活動中的工作階段。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.shutdown()
takeElementScreenshot
「擷取元素螢幕截圖」指令會擷取元素邊界矩形所包圍的可見區域的螢幕截圖。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
用法
browser.takeElementScreenshot(elementId, scroll)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
elementId | 字串 | 先前呼叫「尋找元素」所回傳的元素 ID |
scroll 選用 | boolean | 將元素捲動至可見區域。預設值:true |
回傳
- <String>
screenshot
: base64 編碼的 PNG 影像資料,其中包含將元素捲動至可見區域之後,元素邊界矩形可見區域的螢幕截圖。
getLogTypes
取得可用的記錄類型。
非官方且未公開的 Chromium 指令。關於此指令的更多資訊請見此處。
使用方式
browser.getLogTypes()
回傳值
- <字串陣列>
logTypes
: 可用的日誌類型列表,例如:browser、driver。
getLogs
取得指定日誌類型的日誌。每次請求後會重設日誌緩衝區。
非官方且未經文件化的 Chromium 命令。更多關於此命令的資訊請參閱這裡。
使用方式
browser.getLogs(type)
參數
名稱 | 類型 | 詳細資訊 |
---|---|---|
type | 字串 | 日誌類型 |
回傳值
- <物件陣列>
logs
: 日誌條目列表。