キュウリカピバラ 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