モバイルデバイステストのためのWebDriverコマンドと関数
WebDriverのコマンドと関数を使用して、iOSおよびAndroidのモバイルデバイスを自動化することができます。iOSデバイスを自動化するためには無料のiOS Gatewayが必要です。Androidのテストには無料のAndroid Gatewayを使用できます。
モバイルWebDriverテストでは、テストするシステムのブラウザではなく、特定のアプリへの接続が行われます。WebDriverを使用したテストは、テストしているアプリ内のさまざまな要素とのインタラクションを基にしています。
WebElement識別子
WebDriver接続とFindElement()関数やClickコマンドを使用してテストしているアプリ内のWebElementにアクセスするためには、インタラクションしたい要素を特定する必要があります。以下のWebElement識別子を使用して、モバイルデバイス上の要素を特定することができます:
- webID: このプロパティを使用して、ID属性の値により要素を特定します。
- webName: このプロパティを使用して、Name属性の値により要素を特定します。
- webClassName: このプロパティを使用して、Class属性の値により要素を特定します。
- webXPath: このプロパティを使用して、XPath表現を使用して要素を特定します。XPathとXPath表現についての情報は、XPath in Selenium WebDriver: Complete Tutorialを参照してください。
- webAccessibilityID: このプロパティを使用して、Accessibility ID属性の値により要素を特定します。
WebConnect コマンド
- このコード定義は、モバイルWebDriver接続のための
WebConnectコマンドの使用方法を説明します。このコマンドをブラウザベースのWebDriver接続に使用する方法については、WebDriver Actions: WebConnect Commandを参照してください。 - Eggplant機能を介したSauce Labsへの接続が確立されると、ConnectコマンドはVNC接続とWebDriver接続の両方を確立します。Sauce Labsへの接続に対してWebDriverコマンドを直接送信することができます。明示的なWebDriver接続と同様に。
- モバイルデバイス接続を使用している場合、WebConnectコマンドはサポートされていますが、推奨されていません。Eggplant Functional は、モバイルデバイス接続を確立すると、自動的に WebDriver 接続を開きます。 モバイルデバイス接続のコンテキストで WebConnect を使用することは、高度なユースケースと見なされ、このドキュメントの範囲外です。
Behavior: このコマンドはモバイルデバイス上の特定のアプリへの接続を確立します。
Parameters: WebConnectコマンドは以下のパラメータを取ることができます:
browser:Optional.host: Required. モバイルデバイス接続については、これは常にlocalhostです。port: Required. モバイルWebDriver接続を作成するためのポート番号。iOS接続のデフォルトポートは8100です。Android接続のデフォルトポートは4723です。name:オプション。この接続を参照するために使用する名前です。これはEggplant Functional Connectionリストに表示される名前です。これが指定されると、スクリプトはその接続のブラウザ、ホスト、ポート、そしてプラットフォーム名(モバイルの場合)を引き出します。これらのプロパティのいずれかがWebConnectコマンドに提供されると、それはConnectionリストで設定されたものを上書きします。指定した名前の接続がEggplant Functional Connectionリストに存在しない場合、新しい接続が作成され、提供された情報で保存されます。platformName:モバイル専用。必須。モバイルデバイスのオペレーティングシステム。bundleId:iOS専用。必須。開き、テストしたいモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。device:Android専用。必須。デバイスのID番号。これはコマンドラインでadb devicesを入力することで見つけることができます。appPackage:Android専用。必須。開き、テストしたいモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。appActivity:Android専用。必須。アプリを開きたいアプリの画面。このパラメータは大文字と小文字を区別します。自動化名:Android専用。必須。デバイスをテストするために使用する自動化エンジン。
構文:
WebConnect 接続プロパティ
connectionProperties can include: browser:browserName, {host:hostAddress,} {port:portName,} {url:pageURL,} {name:connectionName,} {desiredCapabilities:{capabilitiesPropertyList}} {platformName: NameofPlatform,} {bundleId: bundleIDNumber} {platformName: NameofPlatform,} {bundleId: bundleIDNumber}
desiredCapabilitiesの場合、波括弧は必須の構文の一部であり、SauceLabs接続と通信する際に使用されます。
例:
WebConnect ホスト:"localhost", ポート:"8100",プラットフォーム名: "iOS", バンドルID: "com.apple.Maps"
例:
WebConnect ホスト: "localhost", ポート: "4723", プラットフォーム名: "Android", デバイス: "04157df49c1d0533", デバイス名: "Android", アプリパッケージ: "com.google.android.apps.maps", アプリアクティビティ: "com.google.android.maps.MapsActivity", 自動化名: "UIAutomator2"
WebDisconnect コマンド
- このコード定義では、モバイルWebDriver接続の
WebDisconnectコマンドの使用について説明しています。ブラウザベースのWebDriver接続のこのコマンドの使用については、WebDriver Actions: WebDisconnect Commandを参照してください。 - Sauce LabsとのEggplant機能統合を使用している場合、WebConnectコマンドは必要ありません。代わりにConnectコマンドを使用すべきです。
- iOSデバイスでのWebDriverテストにおいて正確にWebElementsをクリックするためには、高速スクリーン更新を有効にする必要があります。
Behavior: このコマンドはWebDriver接続を切断します。
Parameters: なし、接続名、またはAll。パラメータを指定しない場合、アクティブなWebDriverが切断されます。特定の接続名と共にWebDisconnectを使用してその接続を閉じる、またはAllを使用してすべてのアクティブな接続を閉じます。
構文:
WebDisconnect {webDriverName | All}
例:
WebDisconnect // アクティブなWebDriver接続を切断
例:
WebDisconnect All // すべてのWebDriver接続を切断
例:
webDisconnect "iphone7"// "iphone7"という名前のWebDriver接続を切断