ブラウザオブジェクト
拡張元: EventEmitter
ブラウザオブジェクトは、ブラウザまたはモバイルデバイスを制御するために使用するセッションインスタンスです。WDIOテストランナーを使用している場合は、グローバルなbrowser
またはdriver
オブジェクトを通じてWebDriverインスタンスにアクセスするか、@wdio/globals
を使用してインポートできます。WebdriverIOをスタンドアロンモードで使用している場合、ブラウザオブジェクトはremote
メソッドによって返されます。
セッションはテストランナーによって初期化されます。セッションの終了も同様です。これもテストランナープロセスによって行われます。
プロパティ
ブラウザオブジェクトには、以下のプロパティがあります。
名前 | タイプ | 詳細 |
---|---|---|
capabilities | オブジェクト | リモートサーバーから割り当てられたケイパビリティ。 例 { |
requestedCapabilities | オブジェクト | リモートサーバーから要求されたケイパビリティ。 例 { browserName: 'chrome' } |
sessionId | 文字列 | リモートサーバーから割り当てられたセッションID。 |
options | オブジェクト | ブラウザオブジェクトがどのように作成されたかに応じたWebdriverIO オプション。詳細については、セットアップタイプを参照してください。 |
commandList | 文字列[] | ブラウザインスタンスに登録されたコマンドのリスト |
isMobile | ブール値 | モバイルセッションを示す。詳細については、モバイルフラグを参照してください。 |
isIOS | ブール値 | iOSセッションを示す。詳細については、モバイルフラグを参照してください。 |
isAndroid | ブール値 | Androidセッションを示す。詳細については、モバイルフラグを参照してください。 |
メソッド
セッションに使用する自動化バックエンドに基づいて、WebdriverIOはどのプロトコルコマンドがブラウザオブジェクトにアタッチされるかを識別します。たとえば、Chromeで自動化セッションを実行すると、elementHover
のようなChromium固有のコマンドにアクセスできますが、Appiumコマンドにはアクセスできません。
さらに、WebdriverIOは、ブラウザまたはページの要素を操作するために推奨される、便利なメソッドのセットを提供します。
さらに、次のコマンドが利用可能です
名前 | パラメータ | 詳細 |
---|---|---|
addCommand | - commandName (タイプ: String )- fn (タイプ: Function )- attachToElement (タイプ: boolean ) | ブラウザオブジェクトから呼び出すことができるカスタムコマンドを、構成目的のために定義できます。詳細については、カスタムコマンドガイドを参照してください。 |
overwriteCommand | - commandName (タイプ: String )- fn (タイプ: Function )- attachToElement (タイプ: boolean ) | 任意のブラウザコマンドをカスタム機能で上書きできます。フレームワークユーザーを混乱させる可能性があるため、注意して使用してください。詳細については、カスタムコマンドガイドを参照してください。 |
addLocatorStrategy | - strategyName (タイプ: String )- fn (タイプ: Function ) | カスタムセレクター戦略を定義できます。詳細については、セレクターガイドを参照してください。 |
備考
モバイルフラグ
セッションがモバイルデバイスで実行されているかどうかに基づいてテストを変更する必要がある場合は、モバイルフラグにアクセスして確認できます。
たとえば、次の設定があるとします
// wdio.conf.js
export const config = {
// ...
capabilities: \\{
platformName: 'iOS',
app: 'net.company.SafariLauncher',
udid: '123123123123abc',
deviceName: 'iPhone',
// ...
}
// ...
}
テストでこれらのフラグに次のようにアクセスできます
// Note: `driver` is the equivalent to the `browser` object but semantically more correct
// you can choose which global variable you want to use
console.log(driver.isMobile) // outputs: true
console.log(driver.isIOS) // outputs: true
console.log(driver.isAndroid) // outputs: false
これは、たとえば、ページオブジェクトで、デバイスタイプに基づいてセレクターを定義する場合に役立ちます。以下のような場合です。
// mypageobject.page.js
import Page from './page'
class LoginPage extends Page {
// ...
get username() {
const selectorAndroid = 'new UiSelector().text("Cancel").className("android.widget.Button")'
const selectorIOS = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]'
const selectorType = driver.isAndroid ? 'android' : 'ios'
const selector = driver.isAndroid ? selectorAndroid : selectorIOS
return $(`${selectorType}=${selector}`)
}
// ...
}
これらのフラグを使用して、特定のデバイスタイプに対してのみ特定のテストを実行することもできます
// mytest.e2e.js
describe('my test', () => {
// ...
// only run test with Android devices
if (driver.isAndroid) {
it('tests something only for Android', () => {
// ...
})
}
// ...
})
イベント
ブラウザオブジェクトはEventEmitterであり、いくつかのイベントがユースケースのために発行されます。
イベントのリストを次に示します。これは、まだ利用可能なイベントの完全なリストではないことに注意してください。ここにより多くのイベントの説明を追加してドキュメントを更新するために、遠慮なく貢献してください。
command
このイベントは、WebdriverIOがWebDriver Classicコマンドを送信するたびに発行されます。次の情報が含まれています。
command
: コマンド名。たとえば、navigateTo
method
: コマンドリクエストを送信するために使用されるHTTPメソッド。たとえば、POST
endpoint
: コマンドエンドポイント。たとえば、/session/fc8dbda381a8bea36a225bd5fd0c069b/url
body
: コマンドペイロード。たとえば、{ url: 'https://webdriverio.dokyumento.jp' }
result
このイベントは、WebdriverIOがWebDriver Classicコマンドの結果を受信するたびに発行されます。command
イベントと同じ情報が含まれており、次の情報が追加されています。
result
: コマンド結果
bidiCommand
このイベントは、WebdriverIOがWebDriver Bidiコマンドをブラウザドライバーに送信するたびに発行されます。次の情報が含まれています
method
: WebDriver Bidi コマンドメソッドparams
: 関連するコマンドパラメーター(APIを参照)
bidiResult
コマンドが正常に実行された場合、イベントペイロードは次のようになります。
type
:success
id
: コマンドIDresult
: コマンド結果(APIを参照)
コマンドエラーの場合、イベントペイロードは次のようになります。
type
:error
id
: コマンドIDerror
: エラーコード。例:invalid argument
message
: エラーに関する詳細stacktrace
: スタックトレース
request.performance
これは、WebDriverレベルの操作を測定するためのイベントです。WebdriverIOがWebDriverバックエンドにリクエストを送信するたびに、このイベントはいくつかの便利な情報とともに発行されます。
durationMillisecond
: リクエストの時間(ミリ秒単位)。error
: リクエストが失敗した場合のエラーオブジェクト。request
: リクエストオブジェクト。URL、メソッド、ヘッダーなどを見つけることができます。retryCount
:0
の場合、リクエストは最初の試行でした。WebdriverIOが内部で再試行すると、増加します。success
: リクエストが成功したかどうかを表すブール値。false
の場合、error
プロパティも提供されます。
イベントの例
Object {
"durationMillisecond": 0.01770925521850586,
"error": [Error: Timeout],
"request": Object { ... },
"retryCount": 0,
"success": false,
},
カスタムコマンド
ブラウザスコープでカスタムコマンドを設定して、一般的に使用されるワークフローを抽象化できます。詳細については、カスタムコマンドに関するガイドを参照してください。