WebDriverマウスとキーボードのイベント
Eggplant FunctionalとSenseTalkを使用したWebDriverテストは、テスト対象のページのDOMに存在するWebElementオブジェクト(HTML要素)にアクセスしてブラウザやウェブアプリのアクションを自動化することができます。以下に説明するコマンドと関数を使用して、Selenium WebDriver接続に基づいたSenseTalkスクリプトでマウスとキーボードのイベントを実行します。
WebElementの識別子
DOM内のWebElementにアクセスするために、FindElement()
関数やWebDriver接続とClick
コマンドを使用する場合など、あなたが対話することを希望する要素を指定するいくつかの方法があります。以下のWebElementの識別子は、DOM内の要素を探すために使用することができます:
- webID: このプロパティは、そのID属性の値によって要素を見つけるために使用します。
- webName: このプロパティは、そのName属性の値によって要素を見つけるために使 用します。
- webTagName: このプロパティは、HTMLタグが指定した値と等しい要素を見つけるために使用します。
- webClassName: このプロパティは、そのClass属性の値によって要素を見つけるために使用します。
- webLinkText: このプロパティは、そのテキストが指示した値と等しいリンクを見つけるために使用します。
- webPartialLinkText: このプロパティは、そのテキストが指示した値を含むリンクを見つけるために使用します。
- webCssSelector: このプロパティは、指示されたCSSセレクタの表現を使用して要素を見つけるために使用します。
- webXPath: このプロパティは、XPath表現を使用して要素を見つけるために使用します。XPathとXPath表現についての詳細は、XPath in Selenium WebDriver: Complete Tutorialをご覧ください。
WebLocationの識別子
WebLocationの識別子は、WebElementと対話するための別の方法です。WebLocationの識別子は、objectType、x、およびyプロパティを含むプロパティリストです。objectTypeは常にwebLocation
で、xとyプロパティはウェブページ上の点の座標を表します。例えば:
{objectType:"webLocation", x:"476", y:"83"}
通常、WebElementが位置する座標を使用します。FoundWebLocation()
関数は、見つかったWebElementのWebLocationプロパティリストを返します。
マウスイベント
以下のSenseTalkコマンドを使用して、WebDriver接続とWebElementでマウスイベントをシミュレートすることができます。
Click
コマンド
このコード定義は、WebDriver接続のClick
コマンドの使用方法を説明しています。画像ベースのスクリプティングでこのコマンドを使用する方法については、Mouse Events and Control: Click Commandを参照してください。
動作: Click
コマンドは、DOM内の要素を見つけ、その場所でクリックイベントをシミュレートします。
パラメータ: 必要なWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供できます。その場合、WaitFor
プロパティは関係ありません。
複数のWebElement Identifiersを渡すこともできます。その場合、それぞれが別々のプロパティリストとして含まれるべきです。複数のWebElementを渡すと、Eggplant Functionalは、コマンドでリストした順にそれらを検索します。複数のプロパティリストにWaitFor
プロパティを含めると、SenseTalkはコマンド全体に対して最も長いWaitFor
値を使用します。つまり、そのプロパティを複数回適用することはありません。
Syntax:
Click { identifierType: value {, waitFor: duration} }
Click { objectType: "webLocation", x: valueX , y: valueY }
Click { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
click (webName:"q")
例:
Click {webid:"uh-signin",waitFor:10}
例:
if webElementFound(WebID:"login-username",WaitFor:10)
Click the FoundWebLocation // Clicks at the web location of the login-username web element
end if
例:
set CheckBoxes to FindElements(WebCSSSelector:"input[type=checkbox]:not([checked])")
repeat with each CheckBox of CheckBoxes
Click CheckBox
end repeat
DoubleClick
コマンド
このコード定義は、WebDriver接続のDoubleClick
コマンドの使用方法を説明しています。画像ベースのスクリプティングでこのコマンドを使用する方法については、Mouse Events and Control: DoubleClick Commandを参照してください。
動作: DoubleClick
コマンドは、DOM内の要素を見つけ、その場所でダブルクリックイベントをシミュレートします。
パラメータ: 必要なWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供できます。その場合、WaitFor
プロパティは関係ありません。
複数のWebElement Identifiersを渡すこともできます。その場合、それぞれが別々のプロパティリストとして含まれるべきです。複数のWebElementを渡すと、Eggplant Functionalは、コマンドでリストした順にそれらを検索します。複数のプロパテ ィリストにWaitFor
プロパティを含めると、SenseTalkはコマンド全体に対して最も長いWaitFor
値を使用します。つまり、そのプロパティを複数回適用することはありません。
Syntax:
DoubleClick { identifierType: value {, waitFor: duration} }
DoubleClick { objectType: "webLocation", x: valueX , y: valueY }
DoubleClick { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
DoubleClick {webName:"TestPlant"}
例:
Doubleclick {webName:"Testplant",waitFor:20}
RightClick
コマンド
このコード定義は、WebDriver接続のRightClick
コマンドの使用方法を説明しています。画像ベースのスクリプティングでこのコマンドを使用する方法については、Mouse Events and Control: RightClick Commandを参照してください。
動作: RightClick
コマンドは、DOM内の要素を特定し、見つけた場所で右クリックイベントをシミュレートします。
パラメータ: 必須のWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供することもできます。その場合、WaitFor
プロパティは無関係です。
複数のWebElement Identifiersを渡すこともでき、その場合、各々は別々のプロパティリストとして含める必要があります。複数のWebElementを渡すと、Eggplant Functionalはコマンドにリストされた順序でそれらを検索します。複数のプロパティリストにWaitFor
プロパティを含めると、SenseTalkはコマンド全体に対して最も長いWaitFor
値を使用します。つまり、そのプロパティを複数回適用することはありません。
Syntax:
RightClick { identifierType: value {, waitFor: duration} }
RightClick { objectType: "webLocation", x: valueX , y: valueY }
RightClick { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
RightClick {WebLinkText:"Home Lending"}
例:
rightClick {objectType:"webLocation", x:247, y:108}
例:
RightClick {WebCSSSelector:"div>a[data-pt-name=share_fb]",waitFor:10}
MoveTo
コマンド
このコード定義は、WebDriver接続用のMoveTo
コマンドの使用方法を説明しています。画像ベースのスクリプティングでこのコマンドを使用するには、Mouse Events and Control: MoveTo Commandを参照してください。
動作: MoveTo
コマンドは、DOM内の要素を検索し、その要素が表示されている場所にウェブページ上のカーソルを移動します。WebElementが表示範囲にない場合、このコマンドはそれをスクロールして表示範囲にします。このコマンドは、ポップアップメニューを開くなどのホバーアクションを実行するために使用できます。
パラメータ: 必須のWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供することも できます。その場合、WaitFor
プロパティは無関係です。
複数のWebElement Identifiersを渡すこともでき、その場合、各々は別々のプロパティリストとして含める必要があります。複数のWebElementを渡すと、Eggplant Functionalはコマンドにリストされた順序でそれらを検索します。複数のプロパティリストにWaitFor
プロパティを含めると、SenseTalkはコマンド全体に対して最も長いWaitFor
値を使用します。つまり、そのプロパティを複数回適用することはありません。
Syntax:
MoveTo { identifierType: value {, waitFor: duration} }
MoveTo { objectType: "webLocation", x: valueX , y: valueY }
MoveTo { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
moveTo {webPartialLinkText:"TestPlant"}
例:
MoveTo {WebCSSSelector:"div[class*=icon-savings-small]",WaitFor:10}
例:
Moveto {WebID:"sign-in-button"} // Scrolls the element into the viewport by first locating it in the DOM
Click "SignInButton" // ボタンがUIに正しく表示されていることを確認するための画像検索を使用し、それをクリックします
例:
set elementsList to FindElements(webTagName:"h3")
repeat with each element in elementsList
moveTo element
WaitFor 2, "CommonIcon"
end repeat
Drag
コマンド
このコード定義はWebDriver接続のDrag
コマンドの使用方法を説明しています。画像ベースのスクリプトにこのコマンドを使用する情報については、マウスイベントとコントロール:Dragコマンドを参照してください。
動作: Drag
コマンドはDOM内の要素を特定し、Webページ上のカーソルをその要素が表示されている場所に移動し、次にマウスダウンのアクションを模擬します。通常、Drag
コマンドの後にDrop
コマンドを使用します。これはカーソルを新しい場所に移動させ、マウスダウンを解放します。
パラメータ: 必要なWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供することもできます。その場合、WaitFor
プロパティは無関係です。
複数のWebElement Identifiersを渡すこともでき、その場合、各々は別々のプロパティリストとして含める必要があります。複数のWebElementを渡すと、Eggplant Functionalはコマンドにリストされた順序でそれらを検索します。複数のプロパティリストにWaitFor
プロパティを含めると、SenseTalkはコマンド全体に対して最も長いWaitFor
値を使用します。つまり、そのプロパティを複数回適用することはありません。
Syntax:
Drag { identifierType: value {, waitFor: duration} }
Drag { objectType: "webLocation", x: valueX , y: valueY }
Drag { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
drag {webTagName:"H1"}
drop {WebtagName:"H2"}
Drop
コマンド
このコード定義はWebDriver接続のDrop
コマンドの使用方法を説明しています。画像ベースのスクリプトにこのコマンドを使用する情報については、マウスイベントとコントロール:Dropコマンドを参照してください。
動作: Drop
コマンドはDOM内の要素を特定し、Webページ上のカーソルをその要素が表示されている場所に移動し、次にマウスアップのアクションを模擬します。移動中、マウスは初期状態(上または下)のままです。通常、カーソルの位置を設定し、マウスダウンアクションを模擬するDrag
コマンドの後にDrop
コマンドを使用します。
パラメータ: 必要なWebElement IdentifierとオプションのWaitFor
プロパティを含むプロパティリスト。または、WebLocation Identifierを含むプロパティリストを提供することもできます。その場合、WaitFor
プロパティは無関係です。
複数のWebElement識別子を渡すこともできます。その場合、それぞれを別のプロパティリストとして含める必要があります。一つ以上のWebElementを渡すと、Eggplant Functionalはコマンドでリストした順序でそれらを検索します。WaitFor
プロパティを複数のプロパティリストに含めると、SenseTalkはコマンド全体で最も 長いWaitFor
値のみを使用します。つまり、そのプロパティを複数回適用することはありません。
文法:
Drop { identifierType: value {, waitFor: duration} }
Drop { objectType: "webLocation", x: valueX , y: valueY }
Drop { identifierType: value {, waitFor: duration} } {, { identifierType2: value2 {, waitFor: duration2} }, ... }
例:
drop {webTagName:"H3"}
キーボードイベント
以下のSenseTalkコマンドを使用して、WebDriver接続でキーボードイベントを送信することができます。
SendKeys
コマンド
動作: このコマンドはキーストロークをブラウザやWebElementに送信します。
パラメータ: 通常、引用符で囲まれたテキスト文字列を送信します。また、ReturnやTabなどの特殊文字やキーについては、SenseTalkキーワードも使用できます。SendKeysコマンドと一緒に含めることができるSenseTalkキーワードのリストを以下のテーブルでご覧ください。
As an alternative to quotes, you can enclose text in double angle brackets (<< >>). Use this method if you need to include quote characters in your text string.
文法:
SendKeys {"text" | keyword | text}
SendKeys webElement, {"text" | keyword | text}
コマンド内でテキスト入力の種類を組み合わせることができることに注意してください。例えば、引用符で囲まれたテキストとキーワードを使用することができます。以下の例では、それを行うさまざまな方法を示しています。
例:
sendKeys "eggplant" //'eggplant'をタイプするためのキーストロークを送信
例:
sendKeys "eggplant", return // 'eggplant'をタイプした後にReturn文字を追加してキーストロークを送信
例:
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 WebElementの位置を変数に格納
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 |
Alt (Windows) | WindowsAltKey ,AltKey |
矢印下 | DownArrow |
矢印左 | LeftArrow |
矢印右 | RightArrow |
矢印上 UpArrow | |
バックスラッシュ (\) | Backslash |
バックスペース/削除 | |
コマンド | CommandKey |
コントロール | ControlKey |
削除 (前方) | DeleteKey |
終了 | EndKey |
Escape | Escape , EscapeKey |
スラッシュ (/) | Slash |
ファンクションキー | F1 ...F12 (ただしF13...F35は除く) |
ホーム | HomeKey |
挿入 | InsertKey |
オプション (Mac) | OptionKey |
ページダウン | PageDown |
ページアップ | PageUp |
引用符 (" ダブルクオート) | Quote |
Return | Return |
シフト | ` |
Space | Space |
Tab | Tab |
関連:
ClearKeys
コマンド
動作: アクティブなWebElementまたは指定したWebElementに入力されたテキストをクリアします。必要に応じて、ウェブページのフィールドや入力フォームのテキストをクリアするには、このコマンドを使用します。
Parameters: 必須ではありませんが、オプションで WebElement Identifier を指定できます。WebElement Identifier を指定しない場合、コマンドはアクティブな WebElement に対して実行されます。オプションの WebDriverConnection オブジェクトを指定して、アクティブな接続を切り替えることもできます。
構文:
ClearKeys {webDriverConnection,} webElementIdentifier
例:
ClearKeys // アクティブなWebElementから任意の内容を削除
例:
Click {webtagname: "textarea"}
sendkeys "Once more unto the breach." // テキストフィールドにテキストを入力
MoveTo {webTagName: "h2"} // フォーカスを別のWebElementに移動
ClearKeys {webtagname: "textarea"} // WebElement識別子を使用して以前に入力したテキストを削除