6

Selenium を使用してテストを実行すると、Firefox プロファイルが見つからないというメッセージがブラウザーに繰り返し表示されます。セレンで使用するための Firefox プロファイルを準備しましたが、そのプロファイルがどこにあるかをセレンに伝える方法がわかりません。

どのFirefoxプロファイルを使用するかをSeleniumに伝えるにはどうすればよいですか?

4

4 に答える 4

4

この同じエラーが発生していました。save_and_open_page私にとっては、問題を引き起こしているのはテスト内での呼び出しであることが判明しました。それらを削除すると、Firefox プロファイル エラーが停止しました。

カピバラ/セレン専用の特別な Firefox プロファイルは (まだ) 必要ありませんが、質問にもっと徹底的に答えるために、この問題を解決しようとして、Firefox のプロファイルを指定する次の 2 つの方法に出会いました。

注:これらのどちらも実際にはプロファイル エラーに関する問題を解決しませんでしたが、あなたが尋ねたので、とにかくここに含めます。

方法 1: (プロジェクトの各開発者が Firefox で特別なプロファイルをセットアップする必要があります。)

以下を test_helper.rb に追加します

Capybara.register_driver :my_firefox_driver do |app|
  Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => 'name_of_existing_profile')
end

方法 2: (プロジェクトの各開発者が Firefox で特別なプロファイルをセットアップする必要はありません。)

以下をテストの helper.rb に追加します。

require 'selenium-webdriver'

...

  Capybara.register_driver :my_firefox_driver do |app|
    profile = Selenium::WebDriver::Firefox::Profile.new
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
  end

次に、選択した上記の方法に関係なく、デフォルトのドライバーを新しいドライバーに設定するか、 Capybara.current_driver = :my_firefox_driverテストの最初に配置して新しいドライバーを選択的に使用し、test_helper.rb にティアダウン タスクが含まれているCapybara.use_default_driverことを確認します。セットアップの指示に従いました。

于 2012-10-05T19:22:55.723 に答える
1

Ruby でこれを行うには多くの調査が必要でしたが、うまくいきました。

まず、-p フラグを指定して Firefox を起動し、プロファイルを選択します。新しいプロファイルを作成し、プロジェクト内の場所に保存します。私の場合、「firefox_profile」ディレクトリにあります。その後、Selenium にこのプロファイルの場所に関するヒントを与える必要があります。そのためには、layout_on_diskメソッドにモンキー パッチを適用できます。

module Selenium
  module WebDriver
    module Firefox
      class Profile
        def layout_on_disk
          firefox_profile = File.expand_path(File.join(File.dirname(__FILE__),'firefox_profile'))
          profile_dir = create_tmp_copy(firefox_profile)
          FileReaper << profile_dir

          install_extensions(profile_dir)
          delete_lock_files(profile_dir)
          delete_extensions_cache(profile_dir)
          update_user_prefs_in(profile_dir)

          puts "Using temporary Firefox profile in: #{profile_dir} from #{firefox_profile}"
          profile_dir
        end
      end
    end
  end
end

ここの要旨として

于 2014-09-30T12:10:45.723 に答える
0

私もこの問題にぶつかり、Firefox プロファイルとは無関係であることが判明しました。私の場合、それは、PhantomJS に使用していた Ghostdriver のバージョンと FirefoxDriver に使用していた Selenium のバージョンの間のクラスパスの非互換性でした (両方を許可するようにコードをセットアップしようとしていました)。Ghostdriver の依存関係を削除し、PhantomJS コードをコメントアウトすると、このプロファイル エラーがなくなりました。実際、表示されたエラー メッセージをもっと詳しく読んでいれば、プロファイル エラーの根本的な原因は、クラスの非互換性によるメソッドの欠落であることがわかったでしょう。具体的なエラーは次のようなものでした:

NoSuchMethodError: org.openqa.selenium.os.CommandLine.waitFor(J)V

于 2015-01-09T16:47:08.083 に答える
0

Firefox の更新後にこのエラーが発生しました。

Firefox を手動で開いて更新を適用できるようにすると、その後テストが機能しました。

于 2015-01-23T18:11:31.237 に答える