せっかなくので、やってみた。

日々のあんなこと、こんなこと、せっかくなのでやってみた

Selenium IDEのassertで値を比較したい

Selenium IDEって便利ですよね。
私は大分昔のFirefox時代に使用していたのですが、いつかのFirefoxバージョンアップから使用できなくなってしまい、その後、後継ツールは出たものの、決定版がないまま混沌とした状態となってしまったため、ちょっと業務では使えないなという状態が続いていました。

しかし数年前から、Chrome Firefoxで公式にSelenium IDEがリリースされましたので、久々に使ってみることにしました。 www.selenium.dev

Selenium IDE(というか本家Selenium)のコマンドには、asset(veryfy)というコマンドがあり、期待した通りに画面表示されたか等々を検証することができる機能が備わっています。

以前は単純な画面遷移でしか使用していなかったのであまり活用していなかったのですが、動的なページでDBから取ってきた値が正しく表示されているかの検証となると、assert textでタグ内の文字をチェックできるのですが、指定した要素のテキストが一致しているかどうかをチェックするのみなので、値のありなしや、数値の大小を比較したい場合には少々物足りない感じでした。
(Seleniumが良くないというのではなく、そもそもそういった用途は意図していないのかもしれません。Seleniumは素晴らしいツールです!)

[2021.9.29追記]
ども本家Seleniumには assertEval(verifyEval)というコマンドがあるらしいのですが、SelenumIDE最新のv3.17.0では使用できなくなってしまっている様です。

どうにか上手い事チェックできる方法はないか試したところ、一部の機能は
assert element present と XPathの指定により、チェックできるようになりました。
例えば、assert textと同様の文字列の完全一致は以下でチェックできます。

HTML

<p id="assert-hogemga">ほげもが</p>

Selenium IDEのコマンド

Command: assert element present
Target: xpath=//p[@id='assert-hogemga' and text()='ほげもが']

containsを使用すると部分一致もできます。

Target: xpath=//p[@id='assert-hogemga' and contains(text(),'げも')]

同様に「値が100以上であること」は以下でチェックできます。
HTML

<p id="assert-number">100</p>

Selenium IDEのコマンド

Command: assert element present
Target: xpath=//p[@id='assert-number' and text()>=100]

XPathで利用可能な演算子は以下で確認できます。
www.ibm.com XPathの書き方次第で、タグの要素(value="○○"など)もチェックすることができます。

期待した場所に値が表示されているかを明示するためにidなどで場所を特定してあげる必要がありますが、XPathを活用することにより、より柔軟に値をチェックできるようになりました。