Я тестирую удаление записей из класса 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 ждать, пока запись не будет удалена?