特定の要素が表示・非表示されている場合に行う、条件分岐の書き方について

1,653 views
Skip to first unread message

Rijun Suzuki

unread,
Jun 12, 2014, 6:30:33 AM6/12/14
to selen...@googlegroups.com
はじめまして。鈴木と申します。

最近JavaでSeleniumを書き始めたため、素人質問ですみませんが、
特定の要素が表示・非表示されている場合に行う、条件分岐の書き方について、
ご教示いただけますでしょうか?

内容:
・特定の要素が表示・非表示されている場合に実行する処理を分岐で入れたい。
 例のコードだと、id=Value が表示されている場合のみ、println を出力したいみたいな内容です。
・例のコードだと、要素が画面に表示されている場合(trueの場合)は正常に処理が実行されるのですが、
 表示されていない場合だと下記のようなエラーが表示されテストが終了してしまいます。
 org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"Value"}

ex:
        if(driver.findElement(By.id("Value")).isDisplayed() == true){
            System.out.println("Hello Java World !");
        }

伊藤望

unread,
Jun 12, 2014, 11:07:50 AM6/12/14
to selen...@googlegroups.com
鈴木さん、はじめまして。伊藤です。

isDisplayedは、画面上に存在する要素に対し、
style="display:none"とかstyle="visibility:hidden"によって非表示になっていないかを
チェックするので、そもそも存在しない要素に対してはNoSuchElementExceptionが発生してしまいます。

要素が画面上に存在しない場合があるのなら、

if(driver.findElements(By.id("Value")).length > 0) {
    System.out.println("Hello Java World !");
}

のようにすれば、特定の要素が画面上に存在するか否かをチェックできると思います。

Rijun Suzuki

unread,
Jun 12, 2014, 11:48:27 PM6/12/14
to selen...@googlegroups.com
伊藤さん

鈴木です。ご回答いただきどうもありがとうございました!

早速上記のコードで試してみたら、正常に動作できました^^
またわからないことあればご質問させていただくかもしれないですが、どうぞよろしくお願いします。

2014年6月13日金曜日 0時07分50秒 UTC+9 伊藤望:

伊藤望

unread,
Jun 15, 2014, 10:00:44 AM6/15/14
to selen...@googlegroups.com
伊藤です。

うまくいったみたいでよかったです。
また困ったことがあればお気軽にどうぞ。
Reply all
Reply to author
Forward
0 new messages