6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Element取得する際のNot found elementのエラー時に確認すること

Last updated at Posted at 2018-08-15

SeleniumでElementを取得する際、慣れていないとよくNot found elementのエラーに遭遇します。
その際、個人的に確認することをまとめました。

使用環境

  • デバッガ : Eclipse
  • ブラウザ : Chrome
  • 言語 : java

1. デバッグを行い、Element変数の中身を確認してみる

Eclipseの場合、画像のようにElement変数内のcriteriaとparentの両方の内容を確認します。
variables.png

2. ブラウザの開発ツールを開き、ElementsタブでAND検索してみる

上記のデバッグで取得した変数の中身を使用します。AND検索の方法は以下です。

  • CSSセレクタを使用した場合: [parent変数の中身]//[criteriaの中身]
  • XPathを使用した場合: [parent変数の中身] (半角スペース)[criteria変数の中身]

上記の検索方法で以下を確認します。

  • 取りたいElementが検索に引っ掛かるかどうか
  • Elementが複数取れていないか

だいたいここでElementの指定方法の間違いに気づいたりします。

スクリーンショット 2018-08-16 0.29.53.png

3. 開発ツール上からCSSセレクタやXPathを取得してみる

開発ツール上で、対象のElement右クリック > Copy > Copy selector/Xpath
上記の指定方法でElementが取得できるか試してみます。
また、自分が記載した指定方法と見比べて、どこが違うか確認します。
※自動的に生成されるCSSセレクタやXPathはメンテナンス性が低いことがあるので注意してください。

スクリーンショット 2018-08-16 0.46.04.png

4. iframeでないか疑ってみる

取得したいElementがiframeの中の要素である場合、ドライバーをスイッチする必要があります。
iframeへ切り替える方法は以下です。

Selenide.switchTo().frame(iframe)

5. 別windowsでないか疑ってみる

取得したい要素が別のウィンドウや別のタブの場合も、ドライバーをスイッチする必要があります。
セレナイドを使っている場合は以下で別ウィンドウへ切り替えられます。

Selenide.switchTo().window(window)

6. 最後に

もし記述に間違いがあったり、他に何かいい方法あったら教えてください。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?