9.9 KiB
| id | title |
|---|---|
| browser | The Browser Object |
Extends: EventEmitter
Browser Objectは、ブラウザまたはモバイル デバイスを制御するために使用するsession instanceです。 WDIO テストランナーを使用する場合は、グローバル browser または driver オブジェクトを通じてWebDriver インスタンスにアクセスするか、 @wdio/globalsを使用してインポートできます。 WebdriverIO を standalone mode で使用する場合、ブラウザ オブジェクトは remote メソッドによって返されます。
セッションはテストランナーによって初期化されます。 同じようにセッションを終了する場合もテストランナーによって行われます これはテストランナープロセスによって行われます。
プロパティ
ブラウザ オブジェクトには次のプロパティがあります。
| Name | Type | Details |
|---|---|---|
capabilities |
Object |
リモートサーバーから割り当てられた機能。 例: { |
requestedCapabilities |
Object |
リモートサーバーから割り当てられた機能。 例: { browserName: 'chrome' } |
sessionId |
String |
リモートサーバーから割り当てられたセッションID。 |
options |
Object |
WebdriverIO option は、ブラウザ オブジェクトの作成方法に応じて異なります。 もっと見る セットアップ タイプ。 |
commandList |
String[] |
ブラウザインスタンスに登録されているコマンドのリスト |
isMobile |
Boolean |
mobile sessionの有無 Mobile Flagsで詳細を参照してください。 |
isIOS |
Boolean |
iOS sessionの有無 Mobile Flagsで詳細を参照してください。 |
isAndroid |
Boolean |
Android sessionの有無 Mobile Flagsで詳細を参照してください。 |
Methods
セッションに使用されるオートメーション バックエンドに基づいて、WebdriverIO の Protocol Commands はどのbrowser objectにアタッチされるかを識別します。 例えば、Chrome で自動セッションを実行する場合など elementHover のような Chromium 固有のコマンドにアクセスできますが、 Appium コマンド のいずれにもアクセスできません。
さらに、WebdriverIO は、ページ上の browser または elements と対話するために使用することが推奨される一連の便利なメソッドを提供します。
これに加えて、次のコマンドも使用できます。
| Name | Parameters | Details |
|---|---|---|
addCommand |
- commandName (Type: String)- fn (Type: Function)- attachToElement (Type: boolean) |
作成目的でブラウザオブジェクトから呼び出すことができるカスタムコマンドを定義できます。 詳細については、 Custom Command ガイドを参照してください。 |
overwriteCommand |
- commandName (Type: String)- fn (Type: Function)- attachToElement (Type: boolean) |
ブラウザコマンドをカスタム機能で上書きできます。 他の開発者を混乱させる可能性があるため、慎重に使用してください。 詳細については、 Custom Command ガイドを参照してください。 |
addLocatorStrategy |
- strategyName (Type: String)- fn (Type: Function) |
カスタム セレクター戦略を定義できます。詳細については、 Selectors ガイドを参照してください。 |
備考
Mobile Flags
セッションがモバイル デバイスで実行されるかどうかに基づいてテストを変更する必要がある場合は、モバイル フラグにアクセスして確認できます。
たとえば、次の構成の場合:
// 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
これは、たとえば、次のようにデバイス タイプに基づいて page objects にセレクターを定義する場合に便利です。
// 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', () => {
// ...
})
}
// ...
})
Events
ブラウザー オブジェクトは EventEmitter であり、ユースケースに応じていくつかのイベントが発行されます。
イベントの一覧はこちらです。 これらは利用可能なイベントのすべてのリストではないことに注意してください。 ここにさらにイベントの説明を追加して、ドキュメントの更新に自由に貢献してください。
request.performance
WebDriverレベルの動作を計測するイベントです。 WebdriverIO が WebDriver バックエンドにリクエストを送信するたびに、イベントがいくつかの下記のような有用な情報とともに発行されます。
durationMillisecond: Time duration of the request in millisecond.error: リクエストが失敗した場合のエラー オブジェクト。request: リクエストオブジェクト。 URL、メソッド、ヘッダーなどを確認することができます。retryCount:0の場合、リクエストは最初の実行 WebDriverIO が内部で再試行するたびに増加していきますsuccess: リクエストが成功したかどうかを表すBooleanfalse、errorの場合はプロパティも提供されます。
イベントの例:
Object {
"durationMillisecond": 0.01770925521850586,
"error": [Error: Timeout],
"request": Object { ... },
"retryCount": 0,
"success": false,
},
カスタムコマンド
ブラウザーのスコープにカスタム コマンドを設定して、一般的に使用されるワークフローを抽象化できます。 詳細については、 Custom Commands に関するガイドを参照してください。