我正在使用Capybara / Selenium测试从ActiveRecord
类删除记录。实际的删除是使用Gherkin脚本完成的(xPath位是这样我可以找到合适的用户删除):
When(/^I delete the other (.*)$/) do |role|
visit '/users'
page.evaluate_script('window.confirm = function() { return true; }')
find(:xpath, %{//tr[td='Bob']/td[@class='list_actions']//a[@data-method='delete']}).click
end
不幸的是,当我查看用户列表时,Bob仍然在那里。但是,如果我暂停执行(使用ask
语句),那么当我恢复确定Bob已经离开时。因此,在Selenium / Rails开始删除他之前,似乎Capybara正在检查Bob的存在。
谷歌搜索,似乎有很多关于Selenium是否等待click
动作的混淆,而我能找到的所有解决方案都假设某些内容正在添加所以他们可以等到它出现 - 在我的情景中不是这样。
那么我怎样摆脱这种竞争条件 - 让Selenium等到记录被删除之后呢?