黄瓜Capybara Ruby自动化中的无头模式

发布于 2025-02-07 07:07:05 字数 2224 浏览 1 评论 0原文

我看到了很多类似的问题,但是他们中的没有帮助我理解。 如何使用Chromedrive,Selenium,Capybara,Ruby和Cucumber以无头模式运行我的.feature文件。 这是我的Env.RB: require_relative'helper.rb'

BROWSER = ENV['BROWSER']

World(Helper)

Capybara.register_driver :selenium do |app|

  if BROWSER.eql?('chrome_headless')

    Capybara::Selenium::Driver.new(app,
        :browser => :chrome,
        :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(
          'chromeOptions' => {
            'args' => [ "headless", "window-size=1440x768", "disable-gpu"]
          }
        )
      )
    elsif BROWSER.eql?('chrome')
        Capybara::Selenium::Driver.new(app,browser: :chrome)
        
    end
  end

Capybara.configure do |config|
    config.default_driver =:selenium
   Capybara.page.driver.browser.manage.window.resize_to(1440,768)
end

Capybara.default_max_wait_time = 60

这是我的助手。rb:

 module Helper
 def take picture(file_name, res)
     file_path = "reports/screenshot/"
     dateTime = DateTime.now.to_s
     dateTime.split(':')
     date = dataHora[0..12].to_s+dataHora[14..15].to_s+dataHora[17..21].to_s
     picture = "#{file_path}#{date}#{nome_arquivo}-#{res}.png"
     temp_shot = page.save_screenshot(picture)
     shot = Base64.encode64(File.open(temp_shot, "rb").read)
     attach(shot, 'image/png')
 end
end

这是我的step_definition文件.rb 只是一个普通的RB文件,其中包含Capybara元素

 adm = LoginAdmin.new
 admInic = TelaInicialAdmin.new


   varGlobal = YAML.load(File.read('./configuracoesGlobaisTeste.yaml'))
    @nomeOferta = varGlobal["nomeOferta"]
     @nomeProduto = varGlobal["nomeProduto"]

       Dado('que acessei a página da Vivo') do
            acesso.load
             end

   Quando('clicar em Entrar posso digitar minhas credenciais ') do 
        page.driver.browser.navigate.refresh
        sleep 3
        inicio.btnEntrar.click
        inicio.usuario.set @usuario
        inicio.senha.set @senha
        inicio.btnAcessarConta.click
     end

是否缺少某些东西? 这就是我使用功能文件中的标签在终端上运行自动化的方式:

cucumber -t@criarClienteCompraLojaClone 

此命令使用GUI打开浏览器。我不希望打开GUI。我希望进行无头测试。 我只是尝试使用Stackoverflow和Google中的每个教程。 请任何建议会有所帮助!

I have seeing a lot of similar question, but non of them have help me to understand.
how to run my .feature file in headless mode using chromedrive, selenium, capybara, ruby and cucumber.
this is my env.rb:
require_relative 'helper.rb'

BROWSER = ENV['BROWSER']

World(Helper)

Capybara.register_driver :selenium do |app|

  if BROWSER.eql?('chrome_headless')

    Capybara::Selenium::Driver.new(app,
        :browser => :chrome,
        :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(
          'chromeOptions' => {
            'args' => [ "headless", "window-size=1440x768", "disable-gpu"]
          }
        )
      )
    elsif BROWSER.eql?('chrome')
        Capybara::Selenium::Driver.new(app,browser: :chrome)
        
    end
  end

Capybara.configure do |config|
    config.default_driver =:selenium
   Capybara.page.driver.browser.manage.window.resize_to(1440,768)
end

Capybara.default_max_wait_time = 60

this is my helper.rb:

 module Helper
 def take picture(file_name, res)
     file_path = "reports/screenshot/"
     dateTime = DateTime.now.to_s
     dateTime.split(':')
     date = dataHora[0..12].to_s+dataHora[14..15].to_s+dataHora[17..21].to_s
     picture = "#{file_path}#{date}#{nome_arquivo}-#{res}.png"
     temp_shot = page.save_screenshot(picture)
     shot = Base64.encode64(File.open(temp_shot, "rb").read)
     attach(shot, 'image/png')
 end
end

this is my step_definition file .rb
just a normal rb file containing capybara elements

 adm = LoginAdmin.new
 admInic = TelaInicialAdmin.new


   varGlobal = YAML.load(File.read('./configuracoesGlobaisTeste.yaml'))
    @nomeOferta = varGlobal["nomeOferta"]
     @nomeProduto = varGlobal["nomeProduto"]

       Dado('que acessei a página da Vivo') do
            acesso.load
             end

   Quando('clicar em Entrar posso digitar minhas credenciais ') do 
        page.driver.browser.navigate.refresh
        sleep 3
        inicio.btnEntrar.click
        inicio.usuario.set @usuario
        inicio.senha.set @senha
        inicio.btnAcessarConta.click
     end

is there missing something?
this is how i run the automation on terminal using the tag in my feature file:

cucumber -t@criarClienteCompraLojaClone 

this command opens a browser using a GUI. i wish not open GUI. I wish to perform a headless test.
i have just try every tutorial in stackoverflow and google.
Please any suggestion will help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梨涡 2025-02-14 07:07:05

我的无头效应为此更新Env.RB文件:

require_relative 'helper.rb'

BROWSER = ENV['BROWSER']


#HEADLESS
World(Helper)

Capybara.register_driver :headless_chrome  do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome,
    options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless no-sandbox disable-gpu]))
end

Capybara.configure do |config|
config.default_driver =:headless_chrome
#Capybara.page.driver.browser.manage.window.resize_to(1440,768)
end

Capybara.default_max_wait_time = 60

My headless works updating the env.rb file for this:

require_relative 'helper.rb'

BROWSER = ENV['BROWSER']


#HEADLESS
World(Helper)

Capybara.register_driver :headless_chrome  do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome,
    options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless no-sandbox disable-gpu]))
end

Capybara.configure do |config|
config.default_driver =:headless_chrome
#Capybara.page.driver.browser.manage.window.resize_to(1440,768)
end

Capybara.default_max_wait_time = 60
一个人的旅程 2025-02-14 07:07:05

我的env.rb文件仅包含Capybara配置调整的以下行:

Capybara.default_driver = :selenium_chrome_headless
Capybara.javascript_driver = :selenium_chrome_headless

My env.rb file only contains the following lines of Capybara config adjustment:

Capybara.default_driver = :selenium_chrome_headless
Capybara.javascript_driver = :selenium_chrome_headless
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文