6

当我使用 selenium 运行测试时,浏览器反复弹出,指出找不到 firefox 配置文件。我准备了一个与 selenium 一起使用的 Firefox 配置文件我只是不确定如何告诉 selenium 该配置文件的位置。

如何告诉 Selenium 使用哪个 Firefox 配置文件?

4

4 回答 4

4

我遇到了同样的错误。save_and_open_page对我来说,结果是在我的测试中调用导致问题。我删除了这些,Firefox 配置文件错误停止了。

我还没有任何需要仅针对水豚/硒的特殊 Firefox 配置文件,但是,为了更彻底地回答您的问题,在尝试解决此问题时,我遇到了以下两种方法来指定 Firefox 的配置文件。

注意:这些都没有真正解决我的配置文件错误问题,但我还是把它们包括在这里,因为你问了。

方法 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 更新后遇到了这个错误。

我手动打开 Firefox,让它应用更新,然后测试工作。

于 2015-01-23T18:11:31.237 回答
0

I also hit this problem and it turned out to be unrelated to the Firefox profile. In my case, it was a classpath incompatibility between the version of Ghostdriver I was using for PhantomJS and the version of Selenium I was using for the FirefoxDriver (I was trying to setup my code to allow for both). Removing the Ghostdriver dependency and commenting out the PhantomJS code made this profile error go away. Really, if I had read the error messages it was giving me more closely, I would have seen that the root cause of the profile error was a missing method due to the class incompatibilities. The specific error was something like:

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

于 2015-01-09T16:47:08.083 回答