Тествам за изтриване на записи от клас ActiveRecord
с помощта на Capybara/Selenium. Действителното изтриване се извършва с помощта на скрипта 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
За съжаление, когато проверявам списъка с потребители, Боб все още е там. Въпреки това, ако поставя на пауза изпълнението (използвайки израз ask
), тогава, когато възобновя, съм сигурен, че Боб е изчезнал. Така че изглежда, че Capybara проверява за съществуването на Боб, преди Selenium/Rails да го изтрият.
Търсейки това в гугъл, изглежда има много объркване относно това дали Selenium изчаква действие click
и всички решения, които мога да намеря, предполагат, че нещо се добавя, така че да могат да изчакат, докато се появи -- не е така в моя сценарий.
И така, как мога да се отърва от това състояние на състезание -- да накарам Selenium да изчака, докато записът бъде изтрит?