2014-02-06 2 views
3

Так что я хочу, чтобы проверить пользователь удаляемого свой счет с помощью водосвинки и RSpec:Javascript подтверждения Dialog в драйвере водосвинки WebKit

scenario "User wants to delete their account" do 
    click_link "Account" 
    click_link "Delete My Account" 
    expect(page).to have_text("You're account was deleted.") 
end 

Только проблема является подтверждением JS появляется диалоговое окно, когда пользователь нажимает кнопку «Удалить аккаунт». Для подтверждения этого диалога я сделал следующее:

  1. Установите Капибара-WebKit
  2. добавить Capybara.javascript_driver = :webkit к моему spec_helper.rb
  3. добавить :js => true к scenario "User wants to delete their account" do.

Теперь ничего не работает с добавлением :js => true. Я получаю ошибку Capybara::ElementNotFound: Unable to find link "Account" и до того, как она работает нормально, делает js: true мешать этим методам capybara? Является ли мой конфиг неправильным?

ответ

-1

Важно отметить, что ссылка была внутри выпадающего списка, которое не было видно без события наведения мыши. Чтобы решить проблему, я открыл раскрывающийся список с помощью javascript, прежде чем я нажал ссылку.

page.execute_script('$(".dropdown-toggle").dropdown("toggle");') 
0

:js => true рассказывает, что Capybara использует драйвер JavaScript для вашей спецификации; необходимо запустить страницы, которые должны выполнять JavaScript как часть их функциональности. В вашем случае это необходимо для диалога подтверждения JS.

... НО есть несколько других вещей, чтобы отметить:

  1. Ваша ссылка называется «Счета» выше и ваш искать «Настройки аккаунта». Это опечатка?
  2. Я не думаю, что вы сможете взаимодействовать с диалоговым окном подтверждения ванильного браузера (т. Е. Поле предупреждения с кнопками подтверждения). Я знаю, что вы не можете использовать драйвер Poltergeist
+0

1. Да, это была типографская благодарность. 2. Это не объясняет, почему я получаю ошибку за что-то, не связанное с javascript, capybara не может найти ссылку, когда '' 'js: true'''. Что-то не так с моим конфигом? –

+0

Вам, вероятно, нужно взглянуть на то, чтобы включить js-драйвер в режим отладки, чтобы вы могли видеть, что происходит на странице. Я знаю, как это сделать с помощью полтергейста, но не capybara-webkit. – steakchaser

0

Проверьте путь посещения, прежде чем нажимать «Удалить мою учетную запись».

 
scenario "User wants to delete their account" do 
    click_link "Account" 
expect(current_path).to eq '/my_accout' 
    click_link "Delete My Account" 
    expect(page).to have_text("You're account was deleted.") 
end 

+0

Я уже пробовал это, хорошая техника для диагностики проблем, спасибо, спасибо –

+0

Если вы подтвердили, что он получает доступ к моей странице учетной записи, должна быть ссылка с текстом «Удалить мою учетную запись». Вы можете использовать «click_on», а не «click_link». –

Смежные вопросы