ruby - 如何使用自定义配置文件注册 Firefox 驱动程序以与 Capybara 一起运行?
问题描述
我尝试通过以下代码段为 Firefox 注册 selenium 驱动程序。其实我想设置自定义的用户代理,但看起来启动浏览器后,用户代理不像我预期的那样。有没有人可以看看有什么问题?非常感谢
我正在使用 * GeckoDriver 0.24 * Firefox ver 67.0 * Capybara 3.18.0 * Selenium WebDriver gem 3.142.3 运行它
Capybara.register_driver :selenium do |app|
browser = ENV['BROWSER']
browser_sym = browser.to_sym
options = {
browser: browser_sym,
}
if browser == :firefox
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.folderList'] = 2
profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/csv'
profile['dom.max_script_run_time'] = Configuration['browser']['wait_time']
profile['general.useragent.override'] = 'customized user-agent'
profile['dom.max_chrome_script_run_time'] = Configuration['browser']['wait_time']
profile['dom.max_script_run_time'] = Configuration['browser']['wait_time']
options[:profile] = profile
elsif browser == :chrome
.....
end
Capybara::Selenium::Driver.new(app, options)
转到启动的浏览器并通过命令检查 Firefox 开发控制台的返回结果navigator.userAgent
,它返回默认值而不是自定义的用户代理。
解决方案
要在 Firefox 配置文件中设置用户代理,您的条件需要最终解析为类似
Capybara.register_driver :ff do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
profile['general.useragent.override'] = 'Random User Agent'
opts = Selenium::WebDriver::Firefox::Options.new(profile: profile)
Capybara::Selenium::Driver.new(app, browser: :firefox, options: opts)
end
您可以使用https://gist.github.com/twalpole/2f69984a5c6063aab04ea25c0aa3d2ca上的代码自己运行它
推荐阅读
- json - How to add keys to values and convert to json in PowerShell?
- html - 无序列表项目第二行,行高
- ruby-on-rails - convert "has many, through" association to simply a "belongs to" association
- java - 如何在 Google Places API 请求中添加延迟?
- android - Kotlin - 一个按钮可以应用 2 个动作吗?
- android - Load already fetched image when offline in Glide for Android
- firebase - 在 Firebase Firestore 中构建 Cloud Storage 的文件树
- javascript - 如何从 Web 服务器自动化 Web?
- jquery - Typescript TypeError: draggable is not a function
- ios - Swift:在循环内更新标签