メインコンテンツまでスキップ

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 { 識別子のタイプ: {, waitFor: 期間} }
Drop { objectType: "webLocation", x: 値X , y: 値Y }
Drop { 識別子のタイプ: {, waitFor: 期間} } {, { 識別子のタイプ2: 値2 {, waitFor: 期間2} }, ... }

例:

drop {webTagName:"H3"}

キーボードイベント

以下のSenseTalkコマンドを使用して、WebDriver接続でキーボードイベントを送信することができます。

SendKeys コマンド

動作: このコマンドはキーストロークをブラウザやWebElementに送信します。

パラメータ: 通常、引用符で囲まれたテキスト文字列を送信します。また、ReturnやTabなどの特殊文字やキーについては、SenseTalkキーワードも使用できます。SendKeysコマンドと一緒に含めることができるSenseTalkキーワードのリストを以下のテーブルでご覧ください。

引用符の代わりに、テキストを二重角括弧(<< >>)で囲むこともできます。テキスト文字列に引用符を含める必要がある場合は、この方法を使用します。

文法:
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,"&&quote&"Yes."&quote // 変数を使用して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
バックスラッシュ (\)
バックスペース/削除
コマンドCommandKey
コントロールControlKey
削除 (前方)`
終了EndKey
Escapeパラメータ: 必須ではありませんが、オプションでWebElement識別子を取ることができます。WebElement識別子を指定しない場合、コマンドはアクティブなWebElement上で動作します。また、オプションでWebDriverConnectionオブジェクトを指定してアクティブな接続を切り替えることもできます。
スラッシュ (/)Slash
ファンクションキー
ホームHomeKey
挿入InsertKey
オプション (Mac)OptionKey
ページダウンPageDown
ページアップPageUp
引用符 (" ダブルクオート)Quote
ReturnReturn
シフト`
SpaceSpace
TabTab

関連:

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識別子を使用して以前に入力したテキストを削除