Selenium(WebDriver) findElementsとfindElementの違い
findElementはWebElementが返り、findElementsはWebElementがリストに格納されて返ってきます。
findElement
WebElement findElement(By by)
findElements
List<WebElement> findElements(By by)
findElement(By by)はWebElementが返り、findElements(By by)はList
ヤフーで実装例。
左カラムの「主なサービス」にリンク(aタグ)が含まれている事を確認してみる。
「主なサービス」は、xpathで"//*[@id="yahooservice"]"でアクセスできる。
String TargetTag = "a"; WebElement WebElement = WebDriver.findElement(By.id("yahooservice")); List<WebElement> WebElementList = WebElement.findElements(By.tagName(TargetTag)); for (int i = 0; i < WebElementList.size(); i++) { System.out.println(WebElementList.get(i).); } if(WebElementList.size == 0){ fail("そのタグはない!"); } else { System.out.println(WebElementList.size+ "個の" + TargetTag + "タグが見つかりました。"); }
"WebDriver.findElements(By.tagName("a"));"をいきなり実行すると、現在のページ内全てから"a"タグを検索する。
なので、"WebElement Element_yahooservice = driver.findElement(By.id("yahooservice"));"で検索したい要素を指定しておいて、そこへ"WebElement.findElements(By.tagName("a"));"と打つと、指定した要素内から指定したタグ(ここでいうと"a")を検索してくれる。