我正在尝试在规范中阻止URL,以实现与使用capybara_webkit
时类似的效果:
Capybara::Webkit.configure do |config|
config.block_url("*google*")
config.allow_url('*my_website.com')
end
阅读this article之后,我尝试执行以下操作:
require 'webmock/rspec'
module WebmockConfig
def self.default_disabled_urls
[
'*google*'
]
end
end
WebMock.disable_net_connect!(allow_localhost: true)
WebMock.disable_net_connect!(allow: WebmockConfig.default_disabled_urls)
但我越来越
即使应该通过
WebMock.disable_net_connect!(allow_localhost: true)
解决。当运行没有
WebMock.disable_net_connect!(allow: WebmockConfig.default_disabled_urls)
的规范时,一切工作正常。 最佳答案
capybara-webkit
白名单/黑名单会影响浏览器发出的请求,而WebMock仅会影响您的应用发出的请求。这意味着WebMock
不能满足您的需求,因为它实际上并不会阻止您的浏览器从google等设备中加载任何内容。为此,在使用 Selenium 驱动程序时,您需要使用像puffing-billy这样的可编程代理,它将允许您自定义浏览器发出的任何匹配请求的响应。
要使用 headless chrome和puffing_billy配置驱动程序,您可以执行以下操作
Capybara.register_driver :headless_chrome do |app|
browser_options = ::Selenium::WebDriver::Chrome::Options.new
browser_options.headless!
browser_options.add_argument("--proxy-server=#{Billy.proxy.host}:#{Billy.proxy.port}")
Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
end
是否需要其他选项取决于您的系统配置等,但是您应该可以通过查看当前的驱动程序注册来判断。
关于ruby - 带有 headless Chrome的黑名单网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51536998/