WebElementsの探索
Selenium WebDriver接続に基づくテストのためのSenseTalkスクリプトを書くとき、あなたの努力の多くは、テストしているページのDocument Object Model(DOM)のさまざまなHTML要素と対話することに基づいている可能性があります。これらのDOMの要素は、しばしばWebElementオブジェクトと呼ばれます。
SenseTalkには、ページ内のWebElementsを探索するためのさまざまな方法を提供するいくつかのコマンドと関数が含まれています。これにより、あるアクションを行う、情報を見つける、またはそれらの要素に対して検証を行うことができます。
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を参照してください。
WebElementオブジェクト
成功したWebElementの検索は、WebElementオブジェクトを作成します。このオブジェクトには、見つかった要素に関する情報を含むプロパティリストが含まれています。WebElementオブジェクトは以下のリストから任意のプロパティを含むことができますが、すべてのプロパティが必ずしも値を返すわけではありません。特定のWebElementタイプがどのプロパティに有用な値を持つかを決定します。
- Text: ブラウザで表示される要素に含まれる見えるテキスト。
- tagName: 要素のHTMLタグ名。
- Name: 要素のName属性の値。
- ID: 要素のID属性の値。
- Class: 要素のClass属性の値。
- Attribute(): 要素の特定の属性の値を返す、またはその属性が存在しない場合は空になります。
- isSelected: 要素がブラウザで選択されているかどうかを示す
True
またはFalse
を返します。 - isEnabled: 要素がブラウザで有効化されているかどうかを示す
True
またはFalse
を返します。 - isDisplayed: 要素がブラウザで表示されているかどうかを示す
True
またはFalse
を返します。 - Origin: ページ内での要素の原点(左上角)のwebLocationプロパティリストを返します。例えば:
(objectType:"webLocation", x:"262", y:"323")
- Size: ページ内での要素のサイズ(幅、高さ)を返します。
- Rectangle: ページ内の要素の長方形(x1、y1、x2、y2)を返します。これらはブラウザの座標であり、画面座標ではないことに注意してください。
- cssProperty: 要素の指定されたCSSプロパティの値を返します。
- WebDriver: 要素を含むWebDriver接続のWebDriverConnectionオブジェクトを返します。
- WebContext: 要素を含むWebDriver接続のWebDriverConnectionオブジェクト、または指定された要素が見つかったWebElementオブジェクトを返します。
WebElementオブジェクトは、呼び出されたときに長い形式または短い形式で表示することができます。つまり、実行の結果ログです。長い形式がデフォルトで、いくつかのプロパティの値が自動的に表示されます。長い形式では、WebElementオブジェクトが表示されるたびにWebDriverサーバーへの追加のリクエストが必要になることに注意してください。
the webElementDisplay
グローバルプロパティ を short
に変更して、短い形式を使用してWebElementsを表示します。現在のページコンテキストで要素が利用できない場合、WebElementオブジェクトはthe WebElementDisplay
が長いに設定されていても短い形式で表示されます。
FindElement
, FindElements
コマンドと関数
挙動: FindElement
はコマンドまたは関数として呼び出すことができます。それはページ内または別の要素内の特定の要素を見つけます。FindElement
はWebDriverConnectionオブジェクトまたはFindElement
またはActiveElement
プロパティの以前の呼び出しによって返されたWebElementオブジェクトのいずれかで呼び出すことができます。また、WebDriverConnectionオブジェクトやWebElementオブジェクトへの参照なしにFindElement
を呼び出すこともできます。その場合、FindElement
はアクティブなWebDriver接続を使用します。
FindElements
は、コマンドまたは関数として、FindElement
と同じように動作しますが、最初に一致する要素を返すのではなく、見つかったすべての一致する要素を含むリストを返します。
FindElement
がコマンドとして呼び出されると、変数it
はWebElementオブジェクトに設定されます。FindElements
の場合は、WebElementオブジェクトのリストになります。
パラメータ: オプションのWebDriverConnectionオブジェクトと必要なWebElement Identifierを含むプロパティリスト。WebDriverConnectionが指定されていない場合、アクティブな接続が使用されます。
Command Syntax:
FindElement {WebDriver: webDriverName , } IdentifierType: value
FindElement {WebDriver: webDriverName , } IdentifierType: valueFunction Syntax:
FindElement {WebDriver: webDriverName , } IdentifierType: value
FindElement {WebDriver: webDriverName , } IdentifierType: value
返り値: FindElement
の場合、返される値はWebElement objectで、FindElements
の場合はWebElementオブジェクトのリストです。
例:
get FindElement(WebXPath:"//a[@class='search icon-search']") // 指定されたWebXPath識別子と一致するページ上の最初のWebElementを見つける
例:
get FindElements (WebTagName:"input") // HTMLタグ名が'input'のページ上のすべてのWebElementsを見つける
例:
FindElement (WebXPath:"//a[@class='search icon-search']") // 指定されたWebXPath識別子と一致するページ上の最初のWebElementを見つける
例:
FindElements (WebTagName:"input") // HTMLタグ名が'input'のページ上のすべてのWebElementsを見つける
例:
set NarrowSearch to FindElement(WebID:"narrow-search") // WebElementオブジェクトを変数'NarrowSearch'に割り当てる
例:
FindElement (WebXPath:"//a[@class='search icon-search']")
put it into myElement // 見つけたWebElementオブジェクトを変数'myElement'に格納する
例:
FindElement (WebLinkText:"Guides and References")
MoveTo it // FindElementで見つけたWebElementオブジェクトをブラウザのビューにスクロールする
WaitFor 3, "GuidesandReferences_Link_Highlighted" // 画像検索を使用して、リンクテキストが期待どおりに表示され、ハイライト表示されていることを確認する
Click it // WebElementオブジェクトをクリックする
例:
put FindElement(WebID:"s") into SearchField
assert that SearchField's attribute("placeholder") contains "search" considering case with warning // 見つけたWebElementのプレースホルダー属性が'検索'を含むことをケースセンシティブで確認する
例:
put findelement(webID: "twotabsearchtextbox") into SearchBox
click SearchBox
sendkeys "Roger Rabbit"
submit
例:
FindElement (WebID:"s")
set SearchField to it // FindElement()関数で作成されたWebElementオブジェクトを変数'SearchField'に割り当てる
log SearchField's tagName // 要素のHTMLタグ名をログに記録する。例えば'input'
assert that SearchField's origin's x is less than 100 // WebElementオブジェクトの左上隅がブラウザの座標平面から100ピクセル未満の位置にあることを確認する
SendKeys SearchField, "network emulation"
例:
get FindElements(webTagName:"h3")
log "There are" && the number of items of it && "h3 elements." // FindElements()で作成されたWebElementオブジェクトの数を示すメッセージをログに記録する。例えば: 'There are 6 h3 elements.'
例:
set elementsList to FindElements(webTagName:"h3") // HTMLタグ名が'h3'のすべての位置付けられたWebElementオブジェクトのリストを格納する
repeat with each element in elementsList // 変数'elementsList'に格納された各WebElementオブジェクトを反復処理する
if element'stext contains "Mummies" then
MoveTo element // ブラウザのビューにテキスト'Mummies'を含むWebElementオブジェクトを自動的にスクロールする
WaitFor 2, "MummiesHeader" // 画像検索を使用して、ミイラh3要素が期待どおりに見えることを確認する
exit repeat
end if
end repeat
WebElementFound
関数
動作: DOMで指定したWebElementを検索します。要素が見つかった場合、関数はtrue
を返し、見つからなかった場合はfalse
を返します。
パラメータ: 要素が表示されるまでの待ち時間を設定するオプションのWaitFor
プロパティと、必須のWebElement Identifierを含むプロパティリスト。
Syntax:
WebElementFound( identifierType: value {, waitFor: duration} )
例:
put webElementFound (WebID:"gsri_ok0") // ページ上にWebElementが見つかった場合は'true'を返し、見つからなかった場合は'false'を返します。
例:
put WebElementFound(WebClassName:"bb-nav-touts",waitFor:30) // DOMでWebElementが利用可能になるまで最大30秒間待ちます。タイムアウト前に要素が利用可能であれば'true'を、そうでなければ'false'を返します。
例:
if webElementFound(webID:"jkQ") then log "Expected result"
例:
assert that webElementFound(webLinkText:"Request a demo") // ウェブ要素がページ上に見つからない場合、例外がスローされます