如何在Capybara中为ChromeDriver设置prefers-reduced-motion: reduce?
在ChromeDriver/Capybara中模拟prefers-reduced-motion: reduce设置
你之前使用的page.driver.header是RackTest驱动的专属方法,ChromeDriver(Selenium驱动)并不支持该方法,以下是两种可行的解决方案:
方法一:注册驱动时配置Chrome偏好
在测试配置文件(如test_helper.rb)中,注册带有减少动画偏好的Chrome驱动:
Capybara.register_driver :selenium_chrome_reduced_motion do |app| options = Selenium::WebDriver::Chrome::Options.new # 设置启用减少动画的偏好 options.add_preference('enable_reduced_motion', true) Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) end # 将默认驱动切换为配置好的驱动 Capybara.default_driver = :selenium_chrome_reduced_motion
方法二:通过DevTools协议动态设置
如果需要在单个测试或setup中动态配置,可使用Chrome DevTools协议:
setup do # 通过DevTools命令模拟prefers-reduced-motion: reduce page.driver.browser.devtools.send_command( 'Emulation.setEmulatedMedia', media: '', features: [{name: 'prefers-reduced-motion', value: 'reduce'}] ) end
内容的提问来源于stack exchange,提问作者Dorian
相关产品推荐
相关产品推荐

