在将提交推送到 GitHub 时,我正在尝试使用 Rails 中的 rspec/Capybara 自动化功能测试。似乎找不到表单元素,仔细检查了 ID 并在没有within助手的情况下进行了测试。在本地运行时,测试运行并顺利通过。但是,使用相同的 Capybara 驱动程序,它们在运行自动化测试时失败,显示:
Capybara::ElementNotFound:
Unable to find css "#new_user"
在 GitHub 中执行时,运行命令开始时会出现以下内容(不确定这对这个问题是否重要):
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly
在我的 spec_helper.rb 中:
Capybara.register_driver :chrome_headless do |app|
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.default_max_wait_time = 10
Capybara.configure do |config|
config.javascript_driver = :chrome_headless
end
2020 年 8 月 18 日更新。我现在正在使用以下配置,spec_helper.rb但没有找到选择框。现在正在实施 Codeship,我看到了同样的错误。
Capybara.register_driver :selenium_headless_chrome do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(loggingPrefs: { browser: 'ALL' })
opts = Selenium::WebDriver::Chrome::Options.new
chrome_args = %w[--headless --window-size=1920,1080 --no-sandbox]
chrome_args.each { |arg| opts.add_argument(arg) }
Capybara::Selenium::Driver.new(app, browser: :chrome, options: opts, desired_capabilities: caps)
end
Capybara.configure do |config|
# change this to :chrome to observe tests in a real browser
config.default_max_wait_time = 10 # seconds
config.javascript_driver = :selenium_headless_chrome
end

