我有一个非常基本的测试,有时可以工作,有时会因为错误信息不一致而失败,例如:
Failure/Error: Unable to find matching line from backtrace
AbstractController::ActionNotFound:
The action 'location_states' could not be found for LocationController
或者:
Failure/Error: select 'Nationwide', from: 'location_type'
Capybara::ElementNotFound:
Unable to find option "Nationwide"
或者:
Failure/Error: Unable to find matching line from backtrace
RuntimeError:
Circular dependency detected while autoloading constant LocationOptions
调用location_states初始化location_type
下拉列表的AJAX回调是在Angular范围内,因此我想知道这是否存在这种不一致行为的原因。我尝试将Capybara.default_wait_time
增加到10,但这似乎没有改变任何东西。
似乎导致所有这一切的特定行:
select 'Nationwide', from: 'location_type'
因为Capybara的选择最终依赖于find
,我认为我不会遇到同步问题,但我想我在这里遗漏了一些东西。
我通过poltergeist使用phantom.js驱动程序。
答案 0 :(得分:0)
我使用rspec,capybara和poltergeist遇到了类似的问题。 Capybara报告它无法找到页面上明显的元素。我使用save_and_open_page并验证它是否存在。当然,当我在“page.find(:css,'#element_id')”之前加上“sleep 5”语句时,那么测试就会通过。