Я пытаюсь понять, как написать функцию входа в oAuth / Twitter с помощью Cucumber / Capybara. Часть этого заключается в посещении страницы: http://www.twitter.com/sessions/new и вводе имени пользователя, пароля и последующем нажатии на кнопку «Войти». Этот последний шаг работает не так, как ожидалось, html-код для этой страницы выглядит следующим образом (находится на французском языке):
<fieldset class="textbox">
<label class="username">
<span>Nom d'utilisateur ou e-mail</span>
<input type="text" value="" name="session[username_or_email]" autocomplete="on" />
</label>
<label class="password">
<span>Mot de passe</span>
<input type="password" value="" name="session[password]" />
</label>
</fieldset>
<fieldset class="subchck">
<button type="submit" class="submit button">Se connecter</button>
Я определил такой шаг в web.steps (обратите внимание, что я использую не драйвер capybara по умолчанию, а capybara -механизировать):
Given /^I sign in$/ do
visit 'http://twitter.com/sessions/new'
fill_in "Username or email", :with => 'xxx'
fill_in "Password", :with => 'xxx'
find(:xpath, 'button[@class="submit button"]')
....
end
Строка find (: xpath, ..) работает некорректно. Я попытался поставить '/ s' (регулярное выражение для символа пробела), но все равно получаю это сообщение об ошибке:
Unable to find '//button[@class="submit\sbutton"]' (Capybara::ElementNotFound)
Я также пробовал:
xpath_for("submit button")
Но я получаю слишком глубокую ошибку уровня стека!
Я не совсем уверен в своих навыках поиска элементов regex / xpath, поэтому, пожалуйста, скажите мне, что не так с моим кодом и как я могу найти эту кнопку?
Большое спасибо за помощь!
[РЕДАКТИРОВАТЬ]
Оказывается, селектор по умолчанию: css. Я изменил его на: xpath:
Capybara.default_selector = :xpath
Но это все еще не решает мою проблему.