【问题标题】:How to setup Capybara with Safari Technology Preview in Ruby如何在 Ruby 中使用 Safari 技术预览设置 Capybara
【发布时间】:2020-04-21 05:18:34
【问题描述】:
我无法使用 Capybara 和 Selenium 与 Safari Technology Preview (STP) 建立会话。 Capybara 甚至不会打开浏览器窗口。
我已经升级到 Ruby 2.3.0 Capybara 2.14.2 Selenium 3.4.0
我从https://developer.apple.com/safari/download/下载并安装了 STP
我正在尝试使用以下代码:
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(
app,
browser: :safari
)
end
Capybara.default_driver = :selenium
如何初始化 Capybara 以使用已实现 W3C 自动化标准的 STP safaridriver?
【问题讨论】:
标签:
ruby
selenium
safari
capybara
【解决方案1】:
为了让它工作,我使用了以下代码:
#This is what we use to test the Safari release channel.
#You will have to install Safari Technology Preview (STP) from Apple.
#see standard properties here: https://www.w3.org/TR/webdriver/#capabilities
#STP requires a capabilities object
#you could use any of the properties from the link above.
#I just used a accept_insecure_certs for the heck of it
desired_caps = Selenium::WebDriver::Remote::Capabilities.safari(
{
accept_insecure_certs: true
}
)
Capybara.register_driver :safari_technology_preview do |app|
Capybara::Selenium::Driver.new(
app,
browser: :safari,
driver_path: '/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver',
desired_capabilities: desired_caps
)
end
Capybara.default_driver = :safari_technology_preview
【解决方案2】:
现在有一种方法可以在不指定路径的情况下执行此操作(您可能不知道)。 Selenium 驱动程序支持告诉驱动程序您想要技术预览。但是,这似乎与其他选项的工作方式略有不同。
调用 Selenium::WebDriver::Safari.technology_preview! 会为此后创建的任何 Safari 驱动程序启用该功能。
Capybara.register_driver :safari_tech_preview do |app|
Selenium::WebDriver::Safari.technology_preview!
capabilities = Selenium::WebDriver::Remote::Capabilities.safari
Capybara::Selenium::Driver.new(app, browser: :safari, desired_capabilities: capabilities)
end
确保您首先在技术预览浏览器中启用了远程自动化。