【发布时间】:2020-12-11 14:03:45
【问题描述】:
我正在从 Poltergeist 迁移到无头 Chrome。
宝石文件:
group :test do
# Capybara - Headless, JavaScript-executing browser for Selenium
gem 'selenium-webdriver' # Selenium webdriver (needed to use Chrome driver)
gem 'webdrivers', '~> 4.0', require: false # Run Selenium tests more easily with automatic installation and updates for all supported webdrivers.
gem 'capybara-screenshot' # Automatically save screen shots when a scenario fails
...
end
spec/support/capybara.rb:
Capybara.javascript_driver = :selenium_chrome_headless
我有一个规范来测试聚焦一个元素是否将 CSS 类应用于一个元素。
it 'shows the fullscreen toggler on focus', js: true do
visit new_user_path
page.execute_script("$('#user_about').focus()")
expect(page).to have_css '.textarea-fullscreenizer-toggler'
end
有了 Poltergeist,它就过去了。对于:selenium_chrome_headless,它不会:
expected to find visible css ".textarea-fullscreenizer-toggler" within #<Capybara::Node::Element tag="div" path="/HTML/BODY[1]/MAIN[1]/DIV[1]/DIV[1]/FORM[1]/FIELDSET[1]/DIV[1]/DIV[1]/DIV[5]"> but there were no matches. Also found "", which matched the selector but not all filters.
不过,使用:selenium_chrome,它通过了!所以看起来headless和non-headless driver做不同的事情!这很不舒服。
有趣的是,在聚焦元素后放置 save_screenshot 时,规范也会通过 headless chrome!
我可以在这里做什么?我在正确的轨道上?我应该改用https://github.com/twalpole/apparition 驱动程序吗?
【问题讨论】:
标签: ruby-on-rails selenium rspec capybara