WebDriverのアクション
Selenium WebDriver接続に基づくテストのSenseTalkスクリプトを書く際には、WebDriverアクションを使用してウェブブラウザやモバイルデバイスに接続し、テストに含まれるページやモバイルアプリをナビゲートし、これらのページやアプリ上でアクションを実行します。SenseTalkには、テスト対象のウェブページ上でこれらのアクションを実行するためのいくつかのコマンドと関数が含まれています。
WebDriverの接続
WebDriverアクションを使用するには、まずウェブブラウザへのアクティブな接続を作成する必要があります。接続のタイプは、自身のITインフラストラクチャ上でブラウザを自己ホストする予定か、Sauce Labsのブラウザ・アズ・ア・サービス・インフラストラクチャを使用する予定かによります。
自己ホストのブラウザを使用する予定の場合、Eggplant Functionalの明示的なWebDriver接続を使用する必要があります。WebDriver接続は、Eggplant Functionalで画像ベースのスクリプティングを 行うためのVNCまたはRDP接続と似ています。WebDriver接続を作成する方法はいくつかあります:
- WebConnectコマンドを使用する。
- WebDriver関数を使用する。
- Eggplant FunctionalのConnection Listを通じてWebDriver接続を設定する。
Sauce Labs接続を利用する予定の場合、単一のSauce Labs接続は論理的にVNC接続とWebDriver接続の両方を公開していることを理解しておくべきです。WebDriver接続は、Sauce Labs接続が作成されたときに自動的に作成され、VNC接続とは独立して管理することはできません。したがって、WebConnectコマンドはSauce Labs接続の管理に使用することはできません。
Sauce Labs接続を作成する方法はいくつかあります:
- Connectコマンドを使用する。
- Eggplant FunctionalのConnection Listを通じて接続を設定する。
SSauce Labs接続が一度確立されると、明示的なWebDriver接続と同じ構文を使用して、Sauce Labs接続にWebDriverコマンドを送信することができます。
WebDriverConnectionオブジェクトのプロパティ
上記のアプローチのいずれかを使用してウェブブラウザへの接続を作成すると、SenseTalkは接続に関する情報を提供するいくつかのプロパティを持つWebDriverConnectionオブジェクトを作成し ます。以下に、WebDriverConnectionオブジェクトのプロパティの一覧を示します:
-
url: ブラウザに現在表示されているページのURL。WebDriverConnectionオブジェクトのURLプロパティを設定すると、ブラウザは指定したURLに移動します。
-
title: ブラウザに現在表示されているページのタイトル(つまり、Titleタグの値)。このプロパティは変更できません。
-
pageSource: ブラウザに現在表示されているページの全HTMLソース。このプロパティは変更できません。
-
alertText: ブラウザに現在表示されているアラートメッセージのテキスト(ある場合)。このプロパティは変更できません。
-
activeElement: このプロパティは、ブラウザのアクティブな要素のWebElementオブジェクトです。戻される可能性のあるプロパティについての情報は、WebElementオブジェクトを参照してください。このプロパティは変更できません。
-
cookies: ブラウザで現在表示されているページに関連するすべてのクッキーのリスト。各クッキーは、
name
、value
、その他のクッキーに関連するプロパティを含むプロパティリストです。プロパティに含まれるクッキーを確認できます:
put the webdriver's cookies // すべてのクッキーを表示します
put each item of the webdriver's cookies whose domain is ".testplant.com" // 指定したクッキーのみを表示しますリストにクッキーを追加することができます。クッキーを追加するときは、名前と値を指定する必要があります:
insert (Name:"addition1", value:"my secret stuff") into the webdriver's cookies
リストからクッキーを削除することができます:
set the webdriver's cookies to each item of the webdriver's cookies whose domain is not ".testplant.com" // .testplant.com以外のドメインのクッキーを削除します
set the webdriver's cookies to empty // すべてのクッキーを削除します -
windowHandle: このプロパティは、現在のブラウザウィンドウの一意の識別子です。ブラウザに複数のウィンドウがある場合、
windowHandle
プロパティを異なる値に設定してウィンドウのフォーカスを切り替えることができます。 -
allWindowHandles: このリストは、ブラウザで開かれている各ウィンドウの一意の
windowHandle
識別子を示しています。これらの識別子を使用してwindowHandle
プロパティを設定し、フォーカスを別のウィンドウに切り替えることができます。このプロパティは変更できません。 -
windowRectangle (またはwindowRect): 現在のブラウザウィンドウの長方形(x1、y1、x2、y2)。
windowRectangle
プロパティを設定すると、ウィンドウのサイズと位置が変わります。 -
windowSize: 現在のブラウザウィンドウのサイズ(幅、高さ)。
windowSize
プロパティを設定すると、ウィンドウのサイズが変わります。幅と高さを設定するか、max
を使用してブラウザのサイズを最大化することで、ブラウザウィンドウのサイズを変更することができます。set the webdriver's windowsize to "500, 1000"
set the webdriver's windowsize to "max" -
windowOrigin (または windowLocation): 現在のブラウザウィンドウの原点(左上隅)の座標(x、y)。
windowOrigin
プロパティを設定すると、画面上のウィンドウの位置が変わります。 -
geoLocation: 緯度、経度、そしてオプションで高度プロパティを持つプロパティリストで、これはブラウザの地理的な位置を表しています。例えば:
(altitude:"value", latitude:"value", longitude:"value")
このプロパティを使用してブラウザの地理的な位置を設定することができます:
set the webdriver's geoLocation to (altitude: 42,latitude:33.8099601,longitude:-117.91554840000003)
注意してください、すべてのウェブサイトがブラウザの地理的な位置をローカリゼーションに利用しているわけではありません。
-
-
capabilities: このWebDriver接続を通じて利用可能な特定の能力のプロパティリスト。このプロパティリストに含まれる値を変更することはできません。
先端初期の接続を開くときに
WebConnect
コマンドまたはWebDriver()
関数を通じて希望の能力をリクエストすることができますが、ブラウザはそのようなリクエストを必ずしも尊重しないかもしれません。そのため、接続を確立した後にCapabilities
プロパティリストをリクエストすることが有用で、実際の能力を確認する必要がある場合に利用できます:log the webdriver's capabilities
-
-
name: このWebDriver接続のユーザーが割り当てた名前です。Connection Listを通じてWebDriver接続を作成する際、または
WebConnect
コマンドやWebDriver
関数を使用して接続を開く際にname
プロパティを使用してこの値を指定できます。WebDriver接続を開いた後はこのプロパティを変更することはできません。 -
browser: WebDriver接続を作成する際にConnection Listで指定するブラウザの名前、または
WebConnect
コマンドまたはWebDriver
関数を使用してWebDriver接続を開く際のbrowser
プロパティです。WebDriver接続を開いた後は、このプロパティを変更することはできません。 -
host: WebDriverサーバーが稼働しているホストマシンです。このプロパティは変更できません。
-
port: このWebDriver接続がサーバーと通信しているポートの番号です。このプロパティは変更できません。
WebConnect
コマンド
このコード定義は、ブラウザでのWebConnect
コマンドの使用方法を説明しています。モバイルでこのコマンドを使用する情報については、WebDriver Commands and Functions for Mobile Device Testingを参照してください。
Eggplant functionalを通じてSauce Labsへの接続が確立されると、ConnectコマンドはVNC接続とWebDriver接続の両方を確立します。明示的なWebDriver接続と同様に、Sauce Labs接続に直接WebDriverコマンドを送信することができます。
WebDriverテスト用にSauce Labsのブラウザへの接続を設定しようとしている場合は、[Connect Command](stk-sut-information-control. md#connect-command)を使用する必要があります。
動作: このコマンドはウェブブラウザへの接続を作成します。サーバーのIPアドレス(host
)とブラウザ名(browser
)を指定して接続を指定するか、またはEggplant Functional Connection Listから名前で定義済みのWebDriver接続を呼び出すことができます。Seleniumが非標準のポートを使用している場合、port
も指定する必要があります。
WebConnect
コマンドを実行するときにConnection Listに一致するエントリがない場合、Eggplant Functionalは接続のための一時エントリをConnection Listに追加します。そのブラウザへの接続がすでに開かれている場合、それはアクティブなWebDriver接続になります。
パラメーター: WebConnect
コマンドは以下のパラメーターを取ることができます:
browser
:必須。
接続したいブラウザの名前。このパラメーターはモバイルテスト用のWebConnect
を使用する際には必要ありません。
Selenium Server 2.0がサポートする任意のブラウザを使用することができます。通常、使用したいブラウザタイプごとにドライバーをインストールする必要があります。Seleniumサーバーとブラウザドライバーのインストールについての情報は、Selenium WebDriver Testing with Eggplant Functionalを参照してください。
-
host
:必須。
サーバーのIPアドレスまたはホスト名、またはEggplant Functional Connection ListからのWebDriver接続の名前。ホストが指定されていない場合、コマンドは現在のVNCまたはRDP SUT接続と同じホストに接続しようとします。SUT接続が利用可能でない場合、指定されたホストなしではコマンドは失敗します。 -
url
:オプション。
ブラウザで開きたいウェブページのURL。 -
port
:オプション; デフォルトは4444。
接続するポート番号。異なるポートを使用している場合は指定する必要があります。 -
name
:オプション。
この接続を参照するために使用する名前。指定された場合、これがConnection Listに表示される名前になります。 -
desiredCapabilities
:オプション。
WebDriver接続の希望する機能を要求するプロパティリストを取ります。これにより、ウェブブラウザの動作や外観に影響を与える可能性があります。指定可能な機能名には、以下がありますが、これらに限定されません:acceptSslCerts
、applicationCacheEnabled
、browserConnectionEnabled
、cssSelectorsEnabled
、databaseEnabled
、handlesAlerts
、javascriptEnabled
、locationContextEnabled
、nativeEvents
、rotatable
、takesScreenShot
、およびwebStorageEnabled
。希望する機能の任意の値は、ブーリアン(真/偽)として設定でき、必要な数だけ含めることができます。ただし、WebDriverは指定されたリクエストを必ずしも尊重しない可能性があります。サポートされる機能は、使用されるドライバとブラウザに依存します。
** SauceLabsの環境でSeleniumサーバに接続する場合、username
とaccessKey
が必要です。これらをdesiredCapabilities
として渡します。例えば次のようにします: desiredCapabilities: {username:"sauce_username", accessKey:"sauce_accessKey"}
(また、EggplantはSauce LabsへのWebDriver接続を取得するために、Eggplant Functionalバージョン22.3で導入された明示的なSauce Labs接続を利用することをお勧めします。Eggplant FunctionalはSauce Labsの認証情報を安全に保存でき、Capabilitiesを使用する場合よりもセキュリティが強化されています。SenseTalkを通じてSauce Labs接続を作成する方法についての詳細は、Connect
Commandのドキュメンテーションを参照してください。)
構文:
WebConnect connectionProperties
_connectionProperties_には以下が含まれます: browser:browserName, {host:hostAddress,} {port:portName,} {url:pageURL,} {name:connectionName,} {desiredCapabilities:{capabilitiesPropertyList}}
DesiredCapabilitiesの場合、中括弧は必要な構文の一部であり、SauceLabs接続と通信する際に使用されます。
例:
WebConnect host:"192.168.199.132", browser: "chrome", port: "4444", name: "Connection2", url: "http://testplant.com"
例:
WebConnect "WindowsChrome" // Connection Listに'WindowsChrome'という名前の事前に設定されたWebDriver接続に接続します
例:
WebConnect host: "localhost", browser: "chrome", desiredCapabilities: (webStorageEnabled: YES, javascriptEnabled: YES, cssSelectorsEnabled: YES) // desiredCapabilitiesプロパティを使用して、WebDriver接続から特定の機能を要求します
例:
set BrowserFeatures to (webStorageEnabled: YES, javascriptEnabled: YES, cssSelectorsEnabled: YES) // 希望する機能のプロパティリストを変数に格納します
WebConnect host: "localhost", browser: "chrome", desiredCapabilities: BrowserFeatures // 変数を使用してdesiredCapabilitiesプロパティを設定します
関連項目:
WebDisconnect
コマンド
このコード定義では、ブラウザでWebDisconnect
コマンドを使用する方法について説明します。モバイルでこのコマンドを使用する情報については、.モバイルデバイステスト用のWebDriverコマンドと関数をご覧ください。
パラメータ: None、接続名、またはAll
。パラメータを指定しない場合、アクティブなWebDriverが切断されます。特定の接続名でWebDisconnect
を使用してその接続を閉じるか、All
を使用してすべてのアクティブな接続を閉じます。
動作: デフォルトでは、この関数はアクティブなWebDriver接続(存在する場合)のプロパティを返します。以下で指定されているようにパラメータを含めることで、別のオープンな接続(利用可能な場合)に切り替えるか、新しい接続を開くことができます。
構文:
WebDisconnect {webDriverName | All}
例:
WebDisconnect // アクティブなWebDriver接続を切断
例:
WebDisconnect All // すべてのWebDriver接続を切断
例:
webDisconnect "Connection2"// "Connection2"という名前のWebDriver接続を切断します
関連項目:
WebDriver
関数
このコード定義では、ブラウザでWebDriver
関数を使用する方法について説明します。モバイルでこのコマンドを使用する情報については、.モバイルデバイステスト用のWebDriverコマンドと関数をご覧ください。
挙動: この関数は、WebDriverConnectionオブジェクトを返します。WebDriver
を使用してオブジェクトのプロパティにアクセスしたり、プロパティを設定したりできます。デフォルトでは、関数はアクティブなWebDriver接続(存在する場合)のプロパティを返します。異なる開放接続(利用可能な場合)に切り替えたり、新しい接続を開くために以下で指定したパラメータを含めることができます。
新しい接続を開くか、アクティブな接続を切り替えるとき、WebDriver
関数はWebConnect
コマンドと同様に動作します。
パラメータ: WebDriver()
関数は以下のパラメータを受け取ることができます:
-
host
: サーバのIPアドレスまたはホスト名、またはEggplant Functional接続リストからのWebDriver接続の名前。通常、ホストプロパティは必要です。しかし 、ホストを指定しない場合、関数は現在のVNCまたはRDP SUT接続と同じホストに接続しようとします。SUT接続が利用できない場合、ホストが指定されていないと関数は失敗します。 -
browser
:ウェブブラウザテストに必要です。
接続したいブラウザの名前。このパラメータはモバイルテストには必要ありません。 -
url
:オプション。
ブラウザで開きたいウェブページのURL。 -
port
:オプション; デフォルトは4444。
接続するポート番号。 -
name
:オプション。
この接続を参照するために使用する名前。指定された場合、これがConnection Listに表示される名前になります。 -
desiredCapabilities
: オプション。 WebDriver接続の要望される能力をリクエストするプロパティリストを取ります。これは、ウェブブラウザの挙動や外観に影響を与えることができます。利用可能な値は以下の通りです:acceptSslCerts
,applicationCacheEnabled
,browserConnectionEnabled
,cssSelectorsEnabled
,databaseEnabled
,handlesAlerts
,javascriptEnabled
,locationContextEnabled
,nativeEvents
,rotatable
,takesScreenShot
, そしてwebStorageEnabled
。希望する機能の値は真偽値(true/false)で設定でき、必要なだけ含めることができます。しかし、WebDriverが与えられたリクエストを必ずしも尊重するわけではありません。
-
platformName:
全てのモバイルテストに必 要。
モバイルデバイスのオペレーティングシステム。 -
bundleId:
iOS専用。必須。
開き、テストしたいモバイルアプリの識別子。 -
device:
Android専用。必須。
デバイスのID番号。これはコマンドラインでadb device list
を入力することで見つけることができます。 -
appPackage:
Android専用。必須。
開き、テストしたいモバイルアプリの識別子。 -
appActivity:
Android専用。必須。
アプリが開くスクリーンを指定します。 -
automationName:
Android専用。必須。
デバイスのテストに使用する自動化エンジン。
構文:
WebDriver( {connectionProperties} )
パラメータ: WebDriver()
関数は以下のパラメータを取ることができます:
WebDriver()
関数でWebDriver接続を開いた場合、それは新しく作成されたWebDriver接続のWebDriverConnectionオブジェクトを返します。
例:
put webDriver() // アクティブなWebDriverConnectionオブジェクトを返す