Techioz Blog

キュウリカピバラ Ruby オートメーションのヘッドレスモード

概要

同様の質問をたくさん見ましたが、理解するのに役立つものはありませんでした。 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

これは私の 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

これは私の step_setting ファイル .rb です カピバラ要素を含む通常の rb ファイル

 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のすべてのチュートリアルを試したところです。 何か提案があれば助かります!

解決策

私のヘッドレス作業は、これのために 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