当我使用selenium运行测试时,浏览器会反复弹出声明无法找到firefox配置文件。我准备了一个与selenium一起使用的Firefox配置文件我只是不确定如何告诉selenium该配置文件的位置。
如何告诉Selenium使用哪个firefox配置文件?
答案 0 :(得分:4)
我得到同样的错误。对我来说,事实证明,在我的测试中调用save_and_open_page
导致了问题。我删除了那些并且Firefox配置文件错误已停止。
我还没有任何需要(仅)for capybara / selenium的特殊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中设置特殊配置文件。)
将以下内容添加到测试助手.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
的任务拆除。
答案 1 :(得分: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
答案 2 :(得分:0)
我也遇到了这个问题,结果与Firefox配置文件无关。在我的例子中,我用于PhantomJS的Ghostdriver版本与我用于FirefoxDriver的Selenium版本之间的类路径不兼容(我试图设置我的代码以允许两者)。删除Ghostdriver依赖项并注释掉PhantomJS代码会使此配置文件错误消失。真的,如果我已经阅读了它给我更密切的错误消息,我会看到由于类不兼容而导致配置文件错误的根本原因是缺少方法。具体错误类似于:
NoSuchMethodError:org.openqa.selenium.os.CommandLine.waitFor(J)V
答案 3 :(得分:0)
我在Firefox更新后遇到此错误。
我手动打开Firefox,允许它应用更新,然后测试工作。