WebDriverマウスとキーボードイベント
Eggplant FunctionalとSenseTalkによるWebDriverテストを利用すると、テスト対象ページのDOMにおけるWebElementオブジェクト(HTML要素)にアクセスすることで、ブラウザとウェブアプリ内におけるアクションを自動化することが可能になります。
下記に、以下のコマンドと関数の説明を示します。
WebElement識別子
WebDriver接続でFindElement()関数やClickコマンドを使用する場合など、DOM内のWebElementにアクセスする場合は、やり取りしたい要素を特定するのに複数の方法を利用できます。 DOM内の要素を特定するのに、以下のWebElement識別子を利用できます。
- webID:本プロパティを利用して、そのID属性の値によって要素を特定できます。
- webName:本プロパティを利用して、その名前属性の値によって要素を特定できます。
- webTagName:本プロパティを利用して、そのHTMLタグが所定の値と等しい要素を特定できます。
- webClassName:本プロパティを利用して、そのクラス属性の値によって要素を特定できます。
- webLinkText:本プロパティを利用して、そのテキストが指定された値と等しいリンクを特定できます。
- webPartialLinkText:本プロパティを利用して、そのテキストが指定された値を含むリンクを特定できます。
- webCssSelector:本プロパティを利用して、指定されたCSSセレクタ式を使用している要素を特定できます。
- webXPath:本プロパティを利用して、XPath式によって要素を特定できます。 XPathとXPath式に関する詳細は、Selenium WebDriverにおけるXPath:完全な手引きを参照してください。
WebLocation識別子
WebLocation識別子は、WebElementとのやり取りに使用できるもう1つのメソッドです。WebLocation識別子は、objectType、xおよびyプロパティを含むプロパティリストです。objectTypeは常にwebLocationであり、xおよびyプロパティは、ウェブページ上の点の座標を表します。例:
通常、WebElementが位置する場所の座標を使用します。FoundWebLocation()関数は、検出されたWebElementのWebLocationのプロパティリストを返します。
マウスイベント
以下のSenseTalkコマンドを使用して、WebDriver接続によるWebElement上のマウスイベントのシミュレーションを実行できます。
Clickコマンド
挙動:Clickコマンドは、DOM内の要素の場所を特定し、検出された場所でクリックイベントのシミュレーションを行います。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
Click (識別子タイプ: "value"{, waitFor: 期間})
Click (objectType:"webLocation", x:"value", y:"value")
Click (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
click (webName:"q")
例:
Click (webid:"uh-signin",waitFor:10)
例:
if webElementFound(WebID:"login-username",WaitFor:10)
Click the FoundWebLocation // ログインユーザー名のWebElementのウェブロケーションでクリックします
end if
例:
set CheckBoxes to FindElements(WebCSSSelector:"input[type=checkbox]:not([checked])")
repeat with each CheckBox of CheckBoxes
Click CheckBox
end repeat
DoubleClickコマンド
挙動:DoubleClickコマンドは、DOM内のWebElementの場所を特定し、検出された場所でダブルクリックイベントのシミュレーションを行います。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
DoubleClick (識別子タイプ: "value"{, waitFor: 期間})
DoubleClick (objectType:"webLocation", x:"value", y:"value")
DoubleClick (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
DoubleClick (webName:"TestPlant")
例:
Doubleclick (webName:"Testplant",waitFor:20)
RightClickコマンド
挙動:RightClickコマンドは、DOM内のWebElementの場所を特定し、検出された場所で右クリックイベントのシミュレーションを行います。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
RightClick (識別子タイプ: "value"{, waitFor: 期間})
RightClick (objectType:"webLocation", x:"value", y:"value")
RightClick (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
RightClick (WebLinkText:"Home Lending")
例:
rightClick (objectType:"webLocation", x:247, y:108)
例:
RightClick (WebCSSSelector:"div>a[data-pt-name=share_fb]",waitFor:10)
MoveToコマンド
挙動:MoveToコマンドは、DOM内のWebElementの場所を特定し、ウェブページ上のカーソルをそのWebElementが表示されている場所に移動させます。WebElementが表示されていない場合は、本コマンドがWebElementをスクロールして表示させます。本コマンドは、ポップアップメニューを開くなどのホバーアクションの実行に利用できます。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
MoveTo (識別子タイプ: "value"{, waitFor: 期間})
MoveTo (objectType:"webLocation", x:"476", y:"83")
MoveTo (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
moveTo (webPartialLinkText:"TestPlant")
例:
MoveTo (WebCSSSelector:"div[class*=icon-savings-small]",WaitFor:10)
例:
Moveto (WebID:"sign-in-button") // DOM内でまず要素の場所を特定し、要素をスクロールしてビューポート内で表示させます
Click "SignInButton" // 画像検索を利用してボタンがUIに適切に表示されているかどうか確認し、確認後ボタンをクリックします
例:
set elementsList to FindElements(webTagName:"h3")
repeat with each element in elementsList
moveTo element
WaitFor 2, "CommonIcon"
end repeat
Dragコマンド
挙動:Dragコマンドは、DOM内のWebElementの場所を特定し、ウェブページ上のカーソルをそのWebElementが表示されている場所に移動させた後、マウスダウンアクションのシミュレーションを行います。通常、Dragコマンドの後に、カーソルを新たな位置に移動させてマウスダウンを解除するDropコマンドを利用します。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
Drag (識別子タイプ: "value"{, waitFor: 期間})
Drag (objectType:"webLocation", x:"476", y:"83")
Drag (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
drag (webTagName:"H1")
drop (WebtagName:"H2")
Dropコマンド
挙動:Dropコマンドは、DOM内のWebElementの場所を特定し、ウェブページ上のカーソルをそのWebElementが表示されている場所に移動させた後、マウスアップアクションのシミュレーションを行います。移動中は、マウスはマウスアップまたはダウンのいずれかの初期状態を維持します。一般的に、Dropコマンドは、カーソルの位置を設定してマウスダウンアクションのシミュレーションを行うDragコマンドの後で利用します。
パラメータ:必須のWebElement識別子とオプションのWaitForプロパティを含むプロパティリスト。代替方法として、WebLocation識別子をプロパティリストに使用することも可能であり、この場合はWaitForプロパティは無効になります。
また、複数のWebElement識別子を渡すことも可能ですが、この場合は、各識別子を個別のプロパティリストとして組み込む必要があります。2つ以上のWebElementを渡す場合は、Eggplant Functionalはそれらをコマンド内の表記順どおりに検索します。複数のプロパティリストに複数のWaitForプロパティを組み込む場合は、SenseTalkは最も長いWaitFor値のみをコマンド全体に使用します。すなわち、本プロパティは複数回適用されません。
構文:
Drop (識別子タイプ: "value"{, waitFor: 期間})
Drop (objectType:"webLocation", x:"476", y:"83")
Drop (識別子タイプ: "value"{, waitFor: 期間}){, (識別子タイプ2: "value"{, waitFor: 期間}), ... }
例:
drag (webTagName:"H1")
drop (WebtagName:"H2")
キーボードイベント
以下のSenseTalkコマンドを使用して、WebDriver接続によるキーボードイベントを送信できます。
SendKeysコマンド
挙動:本コマンドは、キー入力をブラウザまたはWebElementに送信します。
パラメータ:一般的に、引用符に囲まれたテキスト文字列を送信します。リターンやタブなど、特別な文字やキー向けのSenseTalkキーワードも利用できます。SendKeysコマンドに使用できるSenseTalkキーワードのリストについては、以下の表を参照してください。
引用符の代わりとして、テキストを二重山括弧(<< >>)で囲むことができます。テキスト文字列中に引用符文字を使用する必要がある場合は、本メソッドを使用します。
構文:
SendKeys {"テキスト" | キーワード | <<テキスト>>}
SendKeys webElement, {"テキスト" | キーワード | <<テキスト>>}
本コマンドにおいて、テキスト入力の種類を組み合わせることができることに留意してください。例えば、引用符で囲まれたテキストとキーワードが使用できます。本コマンドの様々な実行方法に関して、以下の例を参照してください。
例:
sendKeys "eggplant" //キーストロークを送信して「eggplant」と入力します
例:
sendKeys "eggplant", return // キーストロークを送信して「eggplant」と入力し、その後にリターン文字を入力します
例:
click (webtagname: "textarea")
sendkeys "A noble spirit embiggens the smallest man.",return,"It's a perfectly cromulent word." // キーストロークを送信して最初のテキスト文字列とその後にReturn文字を入力し、新たな行に2番目のテキスト文字列を入力します
例:
put findelement (webtagname: "textarea") into TextField Puts the location of the WebElement into a variable
SendKeys TextField, "She said,"&"e&"Yes.""e // 変数を利用してWebElementをアクティブにし、キーストロークを送信して「She said, "Yes."」と入力します
例:
put findelement (webtagname: "textarea") into TextField
SendKeys TextField, <<She said, "Yes.">> 前の例と同じ文字列が入力されます
Submit
SendKeysキーワード
以下の表に、一般的なキーボードの特殊キーに関して、SendKeysと一緒に使用できるSenseTalkキーワードを示します。ただし、本表はすべてを網羅することを意図していません。通常の文字または文字列として定義されるSenseTalkの事前定義済み変数も、SendKeysと一緒に利用する必要があります。
このキーを押すと、 | このキーワードが入力されます |
---|---|
(キーパッド上の)0、 1~9 | Keypad0、Keypad1~Keypad9 |
オルト(Windows) | WindowsAltKey、AltKey |
下向き矢印 | DownArrow |
左向き矢印 | LeftArrow |
右向き矢印 | RightArrow |
上向き矢印 | UpArrow |
バックスラッシュ(\) | Backslash |
BackspaceまたはDelete | Backspace |
コマンド | CommandKey |
コントロール | ControlKey |
デリート(フォワードデリート) | DeleteKey |
エンド | EndKey |
エスケープ | Escape、EscapeKey |
前向きスラッシュ(/) | Slash |
ファンクションキー | F1~F12 (F13~F35は除く) |
ホーム | HomeKey |
インサート | InsertKey |
オプション(Mac) | OptionKey |
ページダウン | PageDown |
ページアップ | PageUp |
引用符 ("二重引用符) | Quote |
リターン | Return |
シフト | ShiftKey |
スペース | Space |
タブ | Tab |
関連:
ClearKeysコマンド
挙動:アクティブなWebElement または指定されたWebElementに入力されたテキストを消去します。本コマンドを利用すると、必要に応じてウェブページフィールドまたはエントリフォームからテキストを消去できます。
パラメータ:必須のパラメータはありませんが、WebElement識別子をオプションで利用できます。WebElement識別子を指定しない場合は、本コマンドはアクティブなWebElement上で作用します。また、オプションのWebDriverConnectionオブジェクトを指定すると、アクティブな接続を切り替えることができます。
構文:
ClearKeys {webDriverConnection,} {識別子タイプ: "value"}
例:
ClearKeys // アクティブなWebElementから任意のコンテンツを削除します
例:
Click (webtagname: "textarea")
sendkeys "Once more unto the breach." // テキストをテキストフィールドに入力します
MoveTo (webTagName: "h2") // 異なるWebElementにフォーカスが移動します
ClearKeys (webtagname: "textarea") // WebElement識別子を利用して、以前入力したテキストを削除します