Состояние гонки Capybara/Selenium при удалении записи

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


person digitig    schedule 10.09.2014    source источник
comment
В конце шага удаления подождите, пока запись не исчезнет из базы данных.   -  person Dave Schweisguth    schedule 11.09.2014
comment
Да, это то, что я хочу сделать. Как это сделать?   -  person digitig    schedule 11.09.2014
comment
Вот так: stackoverflow.com/a/23555725/634576   -  person Dave Schweisguth    schedule 11.09.2014