【问题标题】:Rspec and Chrome/headless flagRspec 和 Chrome/headless 标志
【发布时间】:2019-01-31 20:55:04
【问题描述】:

我有无头 Chrome 和 Chrome 用于我的 Rspec 测试。我想要一个标志在两者之间切换,这样我就可以看到测试在我想要的时候发生,而在我不想要的时候隐藏它们。我怎样才能实现类似的东西:

rspec --headless

现在我只是将这个秘密与.env var: 联系起来:

Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome

【问题讨论】:

    标签: ruby-on-rails google-chrome rspec capybara


    【解决方案1】:

    在您的 rails_helper.rb 中,您应该创建这样的语句:

    RSpec.configure do |config|
    
      config.before(:each) do
        if  ENV['HEADLESS'] == 'true'
          Capybara.current_driver = :selenium_chrome_headless
        else
          Capybara.current_driver = :selenium_chrome
        end
      end
    end
    

    然后在运行规范时发送一个变量

    $ HEADLESS=true rspec ./spec/features
    

    【讨论】:

      【解决方案2】:

      好吧,重写 env var 是可行的。

      HEADLESS=true rspec
      

      【讨论】:

      • 只是给现在发现此内容的任何人的说明。这显然只适用于 Rails >= 5.1,不适用于 Rails 5.0。
      【解决方案3】:

      嗯,我个人是用这个代码注册驱动的:

      Capybara.register_driver :chrome do |app|
        capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
          chromeOptions: {
            args: [
              ('headless' if ENV.fetch('HEADLESS', '1') == '1')
            ].compact
          }   
        )
      
        Capybara::Selenium::Driver.new(
          app,
          browser: :chrome,
          desired_capabilities: capabilities
        )
      end
      

      然后在.env 中,您可以将变量默认设置为 HEADLESS 或不设置,然后如果您想覆盖它,只需键入 HEADLESS=0 rspec

      【讨论】:

      • 不知道这和我写的有什么不同。
      猜你喜欢
      • 2018-09-11
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多