gebでダイアログOKをクリックする方法について教えてください。

1,135 views
Skip to first unread message

7snow

unread,
Sep 9, 2018, 3:31:53 AM9/9/18
to 日本Seleniumユーザーコミュニティ

gebでとある装置の設定値を変更する所まではできたのですが、設定ボタンを押して反映するところでエラーが解消できず悩んでいます。

お手数おかけしますが、解決策を教えてください。


■やりたいこと■

chromeブラウザで表示されたダイアログのOKをクリックしたい。


ダイアログ.JPG



■教えてほしいこと■
chromeのダイアログでOKボタンを押すコードを下記の通り書きましたが、OKが押せません。
おそらくコードの書き方に問題があると考えています。
お手数おかけしますが、エラーとならない正しいコードを教えて頂けないでしょうか。
末尾にJunitで出力したエラーの一部を記載しました。
(実行環境:Geb 2.2, ChromeDriver 2.41, Selenium 3.14.0)

<コード>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//略
//WEBの設定ボタンをクリック
$("#setbutton_apply").click()

     //ダイアログのOKをクリック
withConfirm(true) {
$('.confirmBtn').click()
     }
//略
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<エラー:Junit4>
org.openqa.selenium.UnhandledAlertException: unexpected alert open: {Alert text : 設定変更を行います。よろしいですか?}
  (Session info: chrome=69.0.3497.81)
  (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds: null

以上です。

7snow

unread,
Sep 15, 2018, 5:10:10 AM9/15/18
to 日本Seleniumユーザーコミュニティ
#最初に訂正させてください。誤記:ダイアログ 正:ポップアップ
なんとか、ポップアップのOK処理が解決できました。コードの記述を変更したことと、groovy2.5.xの潜在バグ?のようです。

■コードの記述
コードは、下記に修正しました。(メモ:参考書籍「Selenium実践入門p.171」)

withConfirmメソッドによるConfirmダイアログの処理に変更しました。
この処理では内部でJavaScriptを使い、ポップアップを実際に表示しないように
処理しているようです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//略
//WEBの設定ボタンをクリック
                  String message2 = withConfirm { $("#setbutton_apply").click() }
        //ポップアップのOKをクリック
                   assertThat(message2, is("設定変更を行います。よろしいですか?"))

//略
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

■Groovyの不具合?(間違えていたらすみません。)

変更したコードを実行すると下記エラーが発生し、ポップアップOK押したときに期待される結果となりませんでした。

 groovy.lang.MissingMethodException: No signature of method: geb.navigator.NonEmptyNavigator.getJs() is applicable for argument types: () values: []
 Possible solutions: getX(), getY(), getX(), getY(), getAt(groovy.lang.EmptyRange), getAt(groovy.lang.Range)

このエラーで検索し、下記サイトを確認すると、groovyのバージョン変更で改善された事例がありました。
早速自分の環境も「2.4.15」へ切り替えて実行すると、見事にポップアップOK押したときに期待される結果になりました。
(上位バージョンの「3.0.0-alpha-3」、「2.5.2」で試しましたが不具合修正されていないようです。)

 以下参考にしたコメント
 Yeah - you had it right. We were using 2.5.0-beta-2. Switching to 2.4.15 seems to solve the problem. Thanks for your help!
 
groovy入替により最終的に実行環境は Geb 2.2, ChromeDriver 2.41, Selenium 3.14.0, Groovy 2.4.15 となりました。

以上です。
2018年9月9日日曜日 16時31分53秒 UTC+9 7snow:
Reply all
Reply to author
Forward
0 new messages