メインコンテンツへスキップ

ブラウザオブジェクト

拡張元: EventEmitter

ブラウザオブジェクトは、ブラウザまたはモバイルデバイスを制御するために使用するセッションインスタンスです。WDIOテストランナーを使用している場合は、グローバルなbrowserまたはdriverオブジェクトを通じてWebDriverインスタンスにアクセスするか、@wdio/globalsを使用してインポートできます。WebdriverIOをスタンドアロンモードで使用している場合、ブラウザオブジェクトはremoteメソッドによって返されます。

セッションはテストランナーによって初期化されます。セッションの終了も同様です。これもテストランナープロセスによって行われます。

プロパティ

ブラウザオブジェクトには、以下のプロパティがあります。

名前タイプ詳細
capabilitiesオブジェクトリモートサーバーから割り当てられたケイパビリティ。
{
acceptInsecureCerts: false,
browserName: 'chrome',
browserVersion: '105.0.5195.125',
chrome: {
chromedriverVersion: '105.0.5195.52',
userDataDir: '/var/folders/3_/pzc_f56j15vbd9z3r0j050sh0000gn/T/.com.google.Chrome.76HD3S'
},
'goog:chromeOptions': { debuggerAddress: 'localhost:64679' },
networkConnectionEnabled: false,
pageLoadStrategy: 'normal',
platformName: 'mac os x',
proxy: {},
setWindowRect: true,
strictFileInteractability: false,
timeouts: { implicit: 0, pageLoad: 300000, script: 30000 },
unhandledPromptBehavior: 'dismiss and notify',
'webauthn:extension:credBlob': true,
'webauthn:extension:largeBlob': true,
'webauthn:virtualAuthenticators': true
}
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: コマンドID
  • result: コマンド結果(APIを参照)

コマンドエラーの場合、イベントペイロードは次のようになります。

  • type: error
  • id: コマンドID
  • error: エラーコード。例: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,
},

カスタムコマンド

ブラウザスコープでカスタムコマンドを設定して、一般的に使用されるワークフローを抽象化できます。詳細については、カスタムコマンドに関するガイドを参照してください。

ようこそ! 何かお手伝いできることはありますか?

WebdriverIO AI Copilot