根据场景使用 Capybara 更改默认驱动程序
Changing default drivers using Capybara per scenario
我写了一个小块,当我在功能文件中的场景上方设置标签 @chrome
时,它将启动 Google Chrome。
Before ('@chrome') do
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app,
:browser => :chrome,
desired_capabilities: {
'chromeOptions' => {
'args' => %w{ window-size=1920,1080 }
}
}
)
end
end
我遇到的问题是功能文件中的所有后续场景也会在 Chrome 中 运行,即使没有为它们设置标签。
有没有办法添加它,让我在完成后返回到 Poltergeist。我尝试了以下方法,但没有用:
After do |scenario|
if @chrome == true
Capybara.register_driver = :poltergeist
Capybara::Poltergeist::Driver.new(
app,
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1'],
window_size: [1280, 1024],
js_errors: false,
debug: false
)
end
end
提前感谢您可能获得的任何帮助
Capybara 已经提供了这种行为 here。要使用它,您只需要要求它并使用您要使用的标签名称注册一个驱动程序。这通常在您的环境中。rb/custom_env.rb
require 'capybara/cucumber'
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app,
browser: :chrome,
...
)
end
重要的是您用来注册驱动程序的名称必须与使用的标签匹配(在本例中为@chrome)。它还表明您不应该在逐个测试的基础上更改 Capybara.default_driver,这就是 Capybara.current_driver 的用途。您也不应该在每种情况下都注册一个新驱动程序,register_driver 意味着为您需要的每个驱动程序配置调用一次,然后稍后按名称引用。
我写了一个小块,当我在功能文件中的场景上方设置标签 @chrome
时,它将启动 Google Chrome。
Before ('@chrome') do
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app,
:browser => :chrome,
desired_capabilities: {
'chromeOptions' => {
'args' => %w{ window-size=1920,1080 }
}
}
)
end
end
我遇到的问题是功能文件中的所有后续场景也会在 Chrome 中 运行,即使没有为它们设置标签。
有没有办法添加它,让我在完成后返回到 Poltergeist。我尝试了以下方法,但没有用:
After do |scenario|
if @chrome == true
Capybara.register_driver = :poltergeist
Capybara::Poltergeist::Driver.new(
app,
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1'],
window_size: [1280, 1024],
js_errors: false,
debug: false
)
end
end
提前感谢您可能获得的任何帮助
Capybara 已经提供了这种行为 here。要使用它,您只需要要求它并使用您要使用的标签名称注册一个驱动程序。这通常在您的环境中。rb/custom_env.rb
require 'capybara/cucumber'
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app,
browser: :chrome,
...
)
end
重要的是您用来注册驱动程序的名称必须与使用的标签匹配(在本例中为@chrome)。它还表明您不应该在逐个测试的基础上更改 Capybara.default_driver,这就是 Capybara.current_driver 的用途。您也不应该在每种情况下都注册一个新驱动程序,register_driver 意味着为您需要的每个驱动程序配置调用一次,然后稍后按名称引用。