ページ要素の位置決めは自動化において最も重要なものであり、Selenium WebDriverは要素の位置付けのための多くの方法を提供します。テスターは、さまざまなポジショニング方法に習熟する必要があります。最も簡単で最も安定したポジショニング方法が使用されます。
内容を読む
自動テスト手順
自動テスト中に、プログラムのページ要素の通常の操作をテストします
1. Webページ要素を見つけて、ストレージオブジェクト(WebElement)に割り当てる
2。次のようなページ要素を保存するオブジェクトの操作:リンクをクリックし、入力ボックスに文字を入力するなど。
3.ページ上の要素が期待を満たしていることを確認してください
これら3つのステップを通して、ページ要素の操作を完了し、ページ要素を見つけることが非常に重要なステップです。ページ要素は見つからず、後で実行することはできません
Webページテクノロジーの実用的な複雑さにより、多数のページ要素を見つけることが困難です。人々はしばしばそれを見つける方法を知りません。
完全な場所方法
WebDriverオブジェクトのFindElement関数を使用してWebページ要素を定義する
FindElements関数を使用して、ページの複数の要素を見つけます
ターゲットを絞ったページ要素は、その後の使用のためにWebElementオブジェクトを使用して保存する必要があります
ページ要素を見つけるための一般的に使用される方法は、推奨事項でソートされた次のとおりです。
ポジショニング方法 | Java言語実装の例 |
IDポジショニング | driver.findelement(by.id( "value of id")); |
名前のポジショニング | driver.findlement(by.name( "name value")); |
リンクのすべてのテキスト配置 | driver.findelement(by.linktext( "リンクのすべてのテキスト")); |
リンクのいくつかのテキスト配置 | driver.findelement(by.partiallinktext( "リンクの部分テキスト")); |
CSSポジショニング | driver.findelement(by.cssselector( "css expression")); |
XPathポジショニング | driver.findelement(by.xpath( "xpath expression")); |
クラス名の位置付け | driver.findlement(by.classname( "class属性")); |
Tagnameタグ名ターゲティング | driver.findelement(by .tagname( "tagname")); |
jQueryメソッド | js.executecript( "return jquery.find(" jquery expression ")") |
見つける方法
要素の位置決めにSelenium WebDriverを使用する場合、FindElementまたはFindElementsメソッドは通常、Classを組み合わせて要素ハンドルを返して要素を見つけます。
FindElement()メソッドは要素を返します。見つからない場合は、例外がスローされます。
FindElements()メソッドは複数の要素を返します。見つからない場合は、空の配列が返され、例外は投げられません。
ポジショニング方法を選択する方法
戦略は、シンプルで安定したポジショニング方法を選択することです。
1.ページ要素にID属性がある場合、IDを使用してそれを見つけます。そうでない場合は、別のポジショニング方法を選択してください
2。CSSSELECTORは高速で実行され、推奨されます
3.ハイパーリンクを配置する場合は、LinkTextまたはPartiAllinkTextを検討できます。ただし、テキストが頻繁に変更されることに注意する必要があるため、使用することはお勧めしません。
4。XPathには最も強力な機能があります。その時点では、実行速度が遅かったため、DOM全体を見つける必要があるため、可能な限り使用しないようにしてください。本当に方法がないときは、xpathを使用してください
IDで要素を見つける:by.id()
ページ要素のIDを介して要素を見つける最も推奨される方法。 W3C Standardは、開発者が各ページ要素に一意のID属性を提供することを推奨しています。
要素に一意のID属性が与えられると、自動テストを行うときに要素を簡単に見つけることができます。要素のIDは、最速の識別戦略であるため、優先識別属性として使用されます。
Baidu HomePageを例にとると、検索ボックスのHTMLサンプルコードは次のとおりです。そのIDはKWです
<input type = "text" autocomplete = "off" maxlength = "100" id = "kw" name = "wd">
「baidu」検索ボタン要素のHTMLサンプルコードは次のとおりです。そのIDはsuです
<input type = "submit" id = "su" value = "baidu">
Selenium/WebDriverでIDによって要素を見つけるためのJavaサンプルコードは次のとおりです
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.baidu.com"); webelement searchbox = driver.findelement(by.id( "kw")); searchbox.sendkeys( "Little Tank Blog Park"); webelement searchbutton = driver.findelement(by.id( "su")); searchbutton.submit(); driver.close();
名前で要素を見つける:by.name()
Douban.comのホームページ検索ボックスを例にとると、検索ボックスのHTMLコードは次のとおりです。その名前は次のとおりです。
<input type = "text" autocomplete = "off" name = "q" placeholder = "books、music、surging、stations、members" size = "12" maxlength = "60">
WebDriverのJavaコードは、名前を介してDouban Homepageで検索ボックスを検索します。
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.douban.com"); webelement searchbox = driver.findelement(by.name( "q")); searchbox.sendkeys( "Small Tank"); searchbox.submit();
tagnameで要素を見つける:by.tagname()
Tagnameを介して要素を検索すると、複数の要素が返されます。したがって、FindElements()が必要です。
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.cnblogs.com");リスト<WebElement> Bottons = Driver.Findelements(by.tagname( "div")); system.out.println( "button:" + bottons.size());
注:Tagnameを使用する場合は、多くのHTML要素のTagnameが同じであることに注意する必要があります。
たとえば、ラジオボックス、チェックボックス、テキストボックス、パスワードボックス。これらの要素タグはすべて入力されます。この時点で、Tagnameだけでは、必要な要素を正確に取得できません。また、型属性を組み合わせて、必要な要素を除外する必要があります。
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.cnblogs.com"); List <WebElement> Bottons = Driver.Findelements(by.tagname( "input")); for(webelement webelement:bottons){if(webelement.getAttribute( "type")。equals( "text")){system.out.println( "入力テキストIS:" + webelement.getText()); }}classNameで要素を見つけます
Taobaoのホームページ検索を例にとると、検索ボックスのHTMLコードは次のとおりです。
<input autocomplete = "off" autofocus = "true" accesskey = "s" aria-label = "を入力してください。
Javaサンプルコードは次のとおりです
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.taobao.com"); thread.sleep(15000); webelement searchbox = driver.findelement(by.classname( "search-combobox-input")); searchbox.sendkeys( "down jacket"); searchbox.submit();
注:classNameを使用して要素を見つけると、時々
linktext by.linktext()によって要素を検索します。
ハイパーリンクのテキスト情報を介して直接位置を配置します。
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u = http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onclick = "return fals;"> login </a>
HTMLコードは次のとおりです
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.baidu.com"); webElement loginlink = driver.findelement(by.linktext( "login")); loginlink.click();
partiallinktext()によって要素を見つける
この方法は、以前の方法の拡張バージョンです。いくつかのキーワードとのみ一致する場合は、この方法を使用して、ハイパーリンクテキストを介して要素を見つけることができます。
HTMLコードは次のとおりです
WebDriver Driver = new firefoxdriver(); driver.get( "http://www.baidu.com"); WebElement loginlink = driver.findelement(by.partiallinktext( "log")); loginlink.click();
注:この方法を使用して特定する場合、問題が発生する可能性があります。ハイパーリンクに「など」が含まれていることがわからない場合です。 FindElementメソッドは、見つかった最初の要素のみを返し、基準を満たすすべての要素を返すことはありません。
基準を満たすすべての要素を取得する場合は、FindElementsメソッドのみを使用できます。
上記は、Java Selenium Elementの位置決めに関する情報です。今後も関連情報を追加し続けます。ご支援ありがとうございます!