Недавно я переключился на хром без головы в моих тестах rspec.После переезда все мои тесты, которые взаимодействуют с элементом jstree, начали проваливаться.Ниже приведен самый маленький код, который позволяет воспроизвести ошибку:
В Gemfile есть зависимости:
# Gemfile
gem 'capybara', '2.18.0'
gem 'selenium-webdriver', '3.141.0'
Это простая страница, которая отображает jstree:
# jstree.html
<!doctype html>
<html>
<head>
<script src="https://rawgit.com/jquery/jquery/1.12.4/dist/jquery.min.js"></script>
<script src="https://rawgit.com/vakata/jstree/3.3.7/dist/jstree.min.js"></script>
<link href="https://rawgit.com/vakata/jstree/3.3.7/dist/themes/default/style.min.css" rel="stylesheet"/>
</head>
<body>
<h1>This is a list:</h1>
<ul id="tree"></ul>
<script>
$('#tree').jstree({
core: {
data: [{ "id": 1, "state": {}, "text": "Example", "parent": "#" }]
}
});
</script>
</body>
</html>
Существует скрипт ruby, чтобы открыть страницу с помощью Capybara и сохранить скриншот страницы:
# script.rb
require 'capybara'
require 'selenium-webdriver'
Capybara.register_driver :chrome do |app|
options = ::Selenium::WebDriver::Chrome::Options.new(
args: %w[headless no-sandbox disable-dev-shm-usage window-size=1280,800])
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.default_driver = :chrome
Capybara.app = Rack::File.new File.expand_path('../', __FILE__)
include Capybara::DSL
visit '/jstree.html'
page.save_and_open_screenshot
Когда я запускаю bundle exec ruby script.rb
и затем открываю скриншот, я вижу следующее:
но когда я открываю jstree.html в своем браузере Chrome, я вижу обычное дерево:
Когда я добавляю выходные сообщения консоли браузера в конец скрипта
puts page.driver.browser.manage.logs.get(type)
и перезапускаю bundle exec ruby script.rb
, я получаю
SEVERE 2018-12-27 16:24:23 +0300: blob:http://127.0.0.1:49346/26695642-8b26-494b-a142-54a515db6512 - Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME
Я использую Chrome v71
и chromedriver v2.45
Кто-нибудь знает, что там происходит?Как я могу исправить эту проблему?