Selenium IDE Tips3
2010年10月10日
Xpath
No. | タイトル | 配信日 | 削除 |
---|---|---|---|
1108 | タイトル1 | 2010-10-01 | |
1109 | タイトル2 | 2010-10-01 | |
1110 | タイトル3 | 2010-10-01 | |
1111 | タイトル4 | 2010-10-01 |
こういうテーブルがあって、たとえば「タイトル3」を見つけて、その隣の「削除」チェックボックスをチェックしたいとき、XPathを使うことになる。
//text()[contains(.,'タイトル3')]/parent::node()/following-sibling::td[2]/input
タイトル3にマッチしたら、その親ノードに移動し「/parent::node()」、同じ階層の後ろの2つめのtdタグへ移動し「/following-sibling::td[2]」、それのinputタグへたどりつく、というもの。それをクリックすれば良いのでSeleniumでは
<tr>
<td>click</td>
<td>//text()[contains(.,'タイトル3')]/parent::node()/following-sibling::td[2]/input</td>
<td></td>
</tr>
というテストケースになる。というわけでXPathを利用すればかなりいろいろなテストができそう。
今回はメルマガ配信システムなので、実際にメールアカウントをGmailへ登録しておき、Seleniumで自動配信されたメールが届いているかどうか、Gmailで確認することもできた。
Xpath 2
さらにテーブル要素の「配信日」でマッチしたら、その次の列の最初のtdの要素を変数に定義するにはこうする。Xpathは//text()[contains(.,'配信日')]/parent::node()/parent::node()/following-sibling::tr[1]/td[1] なので
<tr>
<td>storeText</td>
<td>//text()[contains(.,'配信日')]/parent::node()/parent::node()/following-sibling::tr[1]/td[1]</td>
<td>id_no</td>
</tr>
Xpathで取得した値を変数に格納するにはstoreTextを使う。