webdriverio/website/i18n/ja/docusaurus-plugin-content-docs/current/api/Browser.md
Christian Bromann ccfe70e3b9
(docs): Docusaurus v3 update (#11629)
* (docs): Docusaurus v3 update

* transform scripts to TS
2023-11-08 14:48:46 -08:00

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 リモートサーバーから割り当てられた機能。
例:
{
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 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: リクエストが成功したかどうかを表すBoolean false、 error の場合はプロパティも提供されます。

イベントの例:

Object {
  "durationMillisecond": 0.01770925521850586,
  "error": [Error: Timeout],
  "request": Object { ... },
  "retryCount": 0,
  "success": false,
},

カスタムコマンド

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