前回は WebDriver を使ってブラウザを起動する方法を確認しました。
今回は HTML 要素の取得について確認します。
WebDriver で行えることは、「Web ページの操作」です。Web ページの操作の大部分は HTML の要素を操作することです。
つまり HTML の要素を扱うことが WebDriver で行うことのメインになります。
HTML 要素の操作の第一段階として、まずは HTML 要素に相当するオブジェクトを得る必要があります。
そのオブジェクトは、ドライバクラスの FindElement/FindElements メソッドを使用して取得します。
どの HTML 要素を取得するかをどうやって指定するか、その指定の仕方には、HTML タグ名や CSS セレクタ、XPath などがあり、そのどれを使うかは、FindElementXXX メソッドを使い分けるか、**By** クラスを使用して使い分けるかのいずれかになります。
// ID属性を指定して取得 FindElementById メソッドを使う var element = driver.FindElementById("hoge"); // 他にも // CSSセレクタで取る driver.FindElementByCssSelector とか // name 属性で取る driver.FindElementByName とか // XPath で取る FindElementByXPath とかがある // XPath を指定して取得 By クラスを使う var element2 = driver.FindElement(By.Id("hoge")); // 他にも By.CssSelector とか By.Name とか、FindElementByXXX に対応した By メソッドがある // というよりも FindElementByXXX の方が By を使わないですむ糖衣構文のようなもの
上記の2つは同じことをしていますが、ID 属性を指定して取得する専用のメソッド を使用するか、By オブジェクトによって方法を伝えるか の違いがあります。
いずれの方法を用いても、これにより **IWebElement** のオブジェクトを取得することができます。これが1つの HTML 要素に対応するオブジェクトです。
このオブジェクトを通じて、HTML 要素を操作します。
// タグ名を取得 var tagName = element1.TagName; // innerText を取得 var text = element1.Text; // class 属性の値を取得 var classValue = element1.GetAttribute("class"); // 要素をクリック element1.Click();