モバイルデバイステストのためのWebDriverコマンドと関数
WebDriverのコマンドと関数を使用して、iOSおよびAndroidのモバイルデバイスを自動化することができます。iOSデバイスを自動化するためには無料のiOS Gatewayが必要です。Androidのテストには無料のAndroid Gatewayを使用できます。
iOSデバイスでのWebDriverテストにおいて正確にWebElementsをクリックするためには、高速スクリーン更新を有効にする必要があります。
モバイル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 を使用することは、高度なユースケースと見なされ、このドキュメントの範囲外です。
動作: このコマンドはモバイルデバイス上の特定のアプリへの接続を確立します。
パラメータ: WebConnect
コマンドは以下のパラメータを取ることができます:
browser:
Optional.プラットフォーム名:
モバイル専用。必須。モバイルデバイスのオペレーティングシステム。port
: Required. モバイルWebDriver接続を作成するためのポート番号。iOS接続のデフォルトポートは8100です。Android接続のデフォルトポートは4723です。名前:
オプション。この接続を参照するために使用する名前です。これはEggplant Functional Connectionリストに表示される名前です。これが指定されると、スクリプトはその接続のブラウザ
、ホスト
、ポート
、そしてプラットフォーム名
(モバイルの場合)を引き出します。これらのプロパティのいずれかがWebConnect
コマンドに提供されると、それはConnectionリストで設定されたものを上書きします。指定した名前の接続がEggplant Functional Connectionリストに存在しない場合、新しい接続が作成され、提供された情報で保存されます。host
: Required. モバイルデバイス接続については、これは常にlocalhost
です。appActivity:
Android専用。必須。アプリを開きたいアプリの画面。このパラメータは大文字と小文字を区別します。自動化名:
Android専用。必須。デバイスをテストするために使用する自動化エンジン。appPackage:
Android専用。必須。開き、テストしたいモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。bundleId:
iOS専用。必須。開き、テストしたいモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。デバイス:
Android専用。必須。デバイスのID番号。これはコマンドラインでadb devices
を入力することで見つけることができます。
構文:
WebConnect 接続プロパティ
_connectionProperties_には以下が含まれます: browser:browserName, {host:hostAddress,} {port:portName,} {url:pageURL,} {name:connectionName,} {desiredCapabilities:{capabilitiesPropertyList}} {platformName: NameofPlatform,} {bundleId: bundleIDNumber}
希望する能力
の場合、波括弧は必須の構文の一部であり、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コマンドを使用すべきです。
- 当然,让我们开始:
動作: このコマンドはWebDriver接続を切断します。
動作: デフォルトでは、この関数はアクティブなWebDriver接続(存在する場合)のプロパティを返します。以下で指定されているようにパラメータを含めることで、別のオープンな接続(利用可能な場合)に切り替えるか、新しい接続を開くことができます。
構文:
WebDisconnect {webDriverName | All}
例:
WebDisconnect // アクティブなWebDriver接続を切断
例:
WebDisconnect All // すべてのWebDriver接続を切断
例:
webDisconnect "iphone7"// "iphone7"という名前のWebDriver接続を切断
WebDriver
関数
このコード定義では、モバイルWebDriver接続のWebDriver()
関数の使用について説明しています。ブラウザベースのWebDriver接続のこの関数の使用については、WebDriver Actions: WebDriver() Functionを参照してください。
パラメータ: なし、接続名、またはAll
。パラメータを指定しない場合、アクティブなWebDriverが切断されます。特定の接続名と共にWebDisconnect
を使用してその接続を閉じる、またはAll
を使用してすべてのアクティブな接続を閉じます。
新しい接続を開くか、アクティブな接続を切り替えるとき、WebDriver()
関数はWebConnect
コマンドと同じアクションを実行します。
パラメータ: WebDriver()
関数は以下のパラメータを受け取ることができます:
host
: (必須) モバイルデバイス接続の場合、これは常にlocalhost
です。port
: (必須) モバイルWebDriver接続を作成するためのポート番号。iOS接続のデフォルトポートは8100です。Android接続のデフォルトポートは4723です。name:
(任意) この接続を参照するための名前。指定された場合、これは接続リストに表示される名前です。platformName:
(必須) モバイルデバイスのオペレーティングシステム。bundleId:
(iOSのみ。必須) 開くテスト対象のモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。device:
(Androidのみ。必須) デバイスのID番号。これはコマンドラインにadb devices
と入力することで見つけることができます。appPackage:
(Androidのみ。必須) 開くテスト対象のモバイルアプリの識別子。このパラメータは大文字と小文字を区別します。appActivity:
(Androidのみ。必須) アプリが開く画面。このパラメータは大文字と小文字を区別します。automationName:
(Androidのみ。必須) デバイスをテストするために使用する自動化エンジン。
構文:
WebDriver( {connectionProperties} )
返り値: パラメータなしでWebDriver()
関数を呼び出した場合、それはアクティブなWebDriver接続のWebDriverConnectionオブジェクトを返します。
WebDriver()
関数でWebDriver接続を開いた場合、それは新しく作成されたWebDriver接続のWebDriverConnectionオブジェクトを返します。
例:
put WebDriver() // アクティブなWebDriver接続に関する情報を返します:<WebDriverConnection with Name:"iphone6plus", PlatformName:"iOS", Host:"localhost", BundleID:"com.testplant.YetAnotherSampleApp">
例:
set driver to WebDriver(host:"localhost", port: "8100", platformName: "iOS", bundleId: "com.testplant.YetAnotherSampleApp")
例:
set driver to WebDriver(host: "localhost", port: "4723", platformName: "Android", appPackage:"com.google.android.apps.maps", appActivity:"com.google.android.maps.MapsActivity", automationName:"UIAutomator2")
FindElement
Function
このトピックでは、モバイル WebDriver 接続での FindElement()
関数の使用について説明します。ブラウザベースのWebDriver接続にこの関数を使用する方法については、WebElementsの検索:FindElement()関数を参照してください。
**動作:**このコマンドは、インタラクト可能な特定のWebElementを見つけます。
パラメータ: 探し出したい要素のWebElement Identifier。
文法:
FindElement( webElementIdentifier )
例:
set textField to findElement (webName: "Enter Text Field") // 変数textFieldにWebName "Enter Text Field"の要素を格納