【问题标题】:Cannot fill test data into a form with rspec, capybara and selenium无法使用 rspec、capybara 和 selenium 将测试数据填充到表单中
【发布时间】:2023-03-11 03:23:01
【问题描述】:

我正在使用 RSpec、Capybara 和 Selenium(使用的驱动程序:webkit 和 poltergeist)测试我的 Ruby on Rails 3.2 应用程序。

我将尝试测试以下代码:

scenario 'ask a question', js: true do
  visit group_path(@group, locale: 'en')

  find('#question_subject').set 'A new question'
  find('#question_content').set 'The content of the question'
  find('#question_tag_tokens', visible: false).set @tag.id

  find('#submit').click

  expect(page).to have_content 'A new question'
end

但是当我尝试运行测试时,我会收到以下错误:

 1) Interact with group ask a question
 Failure/Error: find('#question_subject').set 'A new question'
 Selenium::WebDriver::Error::JavascriptError:
   waiting for evaluate.js load failed
 # [remote server] file:///var/folders/gz/svmw_f_n73q9z25trgsp_tnm0000gn/T/webdriver-profile20130806-4190-1l8e4c4/extensions/fxdriver@googlecode.com/components/driver_component.js:8360:in `r'
 # [remote server] file:///var/folders/gz/svmw_f_n73q9z25trgsp_tnm0000gn/T/webdriver-profile20130806-4190-1l8e4c4/extensions/fxdriver@googlecode.com/components/driver_component.js:392:in `fxdriver.Timer.prototype.runWhenTrue/g'
 # [remote server] file:///var/folders/gz/svmw_f_n73q9z25trgsp_tnm0000gn/T/webdriver-profile20130806-4190-1l8e4c4/extensions/fxdriver@googlecode.com/components/driver_component.js:386:in `fxdriver.Timer.prototype.setTimeout/<.notify'
 # ./spec/features/groups_spec.rb:93:in `block (2 levels) in <top (required)>

在 spec_helper.rb 文件中为 DatabaseCleaner 增加了几行:

config.use_transactional_fixtures = false

config.before(:suite) do
  DatabaseCleaner.clean_with :truncation
end

config.before(:each) do
  if example.metadata[:js]
    DatabaseCleaner.strategy = :truncation
  else
    DatabaseCleaner.strategy = :transaction
  end
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end

我无法解决这个问题。我正在尝试不同的驱动程序来测试 javascript:poltergeist 和 capybara-webkit。但我得到同样的错误。希望你能帮助我。

【问题讨论】:

    标签: ruby-on-rails selenium rspec capybara poltergeist


    【解决方案1】:

    我通过使用chromedriver 进行测试解决了我自己的问题:

    1. Download the chromedriver.
    2. 在我的例子中,我将 chromedriver 可执行文件移动到 /usr/local/bin/ 并将这个位置添加到我的 $PATH 变量中:export PATH=/usr/local/bin/;$PATH
    3. 将以下行添加到您的 spec/spec_helper.rb 文件 (capybara wiki):

      Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome) 结束

    更新:

    chromedriver 导致了一个新问题:找不到隐藏元素。所以我安装了capybara-webkit,现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多