如何使用远程硒扩展水豚超时

问题描述

我创建了一个SystemSpec来使用远程硒截屏。该测试包含三个步骤。

  1. 创建100,000条记录
  2. 访问/ book
  3. 拍摄一张屏幕截图

在第3步中,我总是检测到超时,并且总是在一些记录中获取屏幕截图。

require 'rails_helper'

RSpec.describe 'Books',type: :system do
  before do
    100_000.times do
      Book.create!(price: 200)
    end
  end

  it 'scenario #1' do
    visit books_path
    take_screenshot # always timed out !!!
  end
end
Failures:

  1) Books scenario #1
     Failure/Error: visit books_path
     
     Net::ReadTimeout:
       Net::ReadTimeout with #<Tcpsocket:(closed)>
     
     [Screenshot]: /app/tmp/screenshots/failures_r_spec_example_groups_books_scenario_#1_695.png

     
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:129:in `response_for'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:82:in `request'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:59:in `get'
     # /bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/navigation.rb:32:in `to'
     # /bundle/ruby/2.7.0/gems/capybara-3.33.0/lib/capybara/selenium/driver.rb:71:in `visit'
     # /bundle/ruby/2.7.0/gems/capybara-3.33.0/lib/capybara/session.rb:278:in `visit'
     # /bundle/ruby/2.7.0/gems/capybara-3.33.0/lib/capybara/dsl.rb:53:in `call'
     # /bundle/ruby/2.7.0/gems/capybara-3.33.0/lib/capybara/dsl.rb:53:in `visit'
     # ./spec/system/books_spec.rb:11:in `block (2 levels) in <top (required)>'

我想延长时间以等待屏幕截图完成。怎么做??

我尝试更新等待时间。首先,我添加Capybara.default_max_wait_time = 1200,但没有任何意义。其次,我有如下更新水豚的配置,但它也是输出错误消息,例如unkNown option: {:"enable-features"=>"NetworkService,NetworkServiceInProcess"}

require 'capybara/rspec'

RSpec.configure do |config|
  config.before(:each,type: :system) do
    driven_by :selenium,using: :headless_chrome,options: {
      browser: :remote,'enable-features': 'NetworkService,NetworkServiceInProcess',url: ENV.fetch("SELENIUM_DRIVER_URL"),desired_capabilities: :chrome
    }
    Capybara.server_host = 'web'
    Capybara.app_host='http://web'
  end
end

更新

我像这样更新books_spec.rb以等待渲染,但是结果是“超时”。渲染/ books大约需要16秒。输出“超时”不会太长。

require 'rails_helper'

RSpec.describe 'Books',type: :system do
  before do
    100_000.times do
      Book.create!(price: 200)
    end
  end

  it 'scenario #1' do
    visit books_path
    expect(page).to have_content('New Book')
    take_screenshot
  end
end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)