2

削除リンクのある標準の Rails アプリケーションがあります。この削除リンクは、ブラウザー ポップアップ モーダル (railsconfirmオプションを使用) で表示されます。

現在、Cucumber、Selenium-Webdriver (または Watir-Webdriver、まだ決定していません)、および page-object gem を使用して削除機能をテストしようとしています。

モーダルがトリガーされると、ページで何をしても次のエラーが発生します。

Modal dialog present (Selenium::WebDriver::Error::UnhandledAlertError)

いろいろ調べてみましたが、この状態を処理する方法が見つかりません。PageFactory可能であれば、page-object gemのモジュールを引き続き使用したいと考えています。

モーダルを却下/受け入れるにはどうすればよいですか?

4

2 に答える 2

1

これを行う方法を見つけましたが、正確な実装については決定していません。

Javascript では、任意の関数を上書きできます。つまり、confirm

これは、次のコードを実行してポップアップを無効にできることを意味します。

def disable_popups
  # don't return anything for alert
  browser.execute_script("window.alert = function() {}")

  # return some string for prompt to simulate user entering it
  browser.execute_script("window.prompt = function() {return 'my name'}")

  # return null for prompt to simulate clicking Cancel
  browser.execute_script("window.prompt = function() {return null}")

  # return true for confirm to simulate clicking OK
  browser.execute_script("window.confirm = function() {return true}")

  # return false for confirm to simulate clicking Cancel
  browser.execute_script("window.confirm = function() {return false}")
end

これをinitalize_pagea の関数内に配置するとpage-object、ダイアログは自動的に削除されます。

def initialize_page
    disable_popups
end

または、ポップがトリガーされる直前に行うこともできます

def delete
  disable_popups
  delete_link # => clicks the link
end

参考文献:

于 2013-09-05T12:14:58.960 に答える