规格:Rails 5.2,Ruby 2.5.1,Yarn 1.91.1,React-Rails 2.6.0,selenium-webdriver 3.14,chromedriver 77,capybara gem 3.29,Ubuntu 18.04
问题:我在Rails应用程序中使用react组件创建了一个调查表,该组件在开发模式下运行时可以工作。我可以单击是或否按钮,然后使用回调函数呈现新的问题文本。但是,我的硒集成测试没有做到这一点。 page
对象的第一个问题仍然使用相同的文本,因此我收到这样的错误
Failure/Error: expect(question.text).to include('last question')
expected "first question" to include "last question"
测试本身在features / questionnaire.rb
中看起来像这样 RSpec.feature "Onboarding Questionnaire", type: :feature, js:true do
(...)
it...
question = find('h3.question')
expect(question.text).to include('first question')
yes = find('#yes')
yes.click
sleep 5
question = find('h3.question')
expect(question.text).to include('last question')
在yes.click
之后出现问题。我以为起初我的动画是造成此问题的原因,但我删除了这些问题,而这只是在回调函数中使用setState。
这是我的react回调函数
saveAnswer(e) {
questionnaire = this
++questionnaire.state.page
questionnaire.setState({page: questionnaire.state.page})
}
这是我的驱动程序配置
Capybara.javascript_driver = :selenium_chrome_headless
答案 0 :(得分:0)
现在可以根据需要使用sleep
。这是我所做的更改。
1)我删除了不推荐使用的宝石chromedriver-helper
,并用webdrivers
代替
2)将require 'webdrivers'
添加到rails_helper.rb文件中。
3)我更改为questionnaire = this
的{{1}}的反应代码(在开发中未显示或未登录到chrome webdriver中)发现错误。
现在可以使用var questionnaire = this