我在 ruby 中使用 selenoid 进行远程浏览器测试。我正在使用“selenium-webdriver”、“capybara”、“rspec”进行自动化。我正在使用 attach_file 方法将文件上传到浏览器我想在 Firefox 和 Chrome 浏览器上上传文件,但它都会引发错误;
镀铬
Selenium::WebDriver::Error::UnknownCommandError: unknown command: unknown command: session/***8d32e045e3***/se/file
在火狐中
“不允许 HTTP 方法”处的意外令牌
所以搜索后我找到了 chrome 的解决方案,即在 caps['goog:chromeOptions'] > caps['goog:chromeOptions'] = {w3c: false}中设置 w3c 选项 false 所以现在 chrome 正在使用OSS 桥进行握手但是我不知道如何在 Firefox 中做到这一点。Firefox 没有类似的解决方案。我的浏览器功能如下:
if ENV['BROWSER'] == 'firefox'
caps = Selenium::WebDriver::Remote::Capabilities.new
caps['browserName'] = 'firefox'
# caps['moz:firefoxOptions'] = {w3c: false} ## It is not working
else
caps = Selenium::WebDriver::Remote::Capabilities.new
caps["browserName"] = "chrome"
caps["version"] = "81.0"
caps['goog:chromeOptions'] = {w3c: false}
end
caps["enableVNC"] = true
caps["screenResolution"] = "1280x800"
caps['sessionTimeout'] = '15m'
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, browser: :remote,
:desired_capabilities => caps,
:url => ENV["REMOTE_URL"] || "http://*.*.*.*:4444/wd/hub"
)
end
Capybara.configure do |config|
config.default_driver = :selenium
end