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が返ります。

ヤフーで実装例。
f:id:jigsaw_coltd:20130927160619p:plain
左カラムの「主なサービス」にリンク(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")を検索してくれる。