Я пытаюсь выяснить, как написать функцию входа в 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-mechanize ):
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, поэтому, пожалуйста, скажите, что не так с моим кодом и как я смог найти эту кнопку?
Большое спасибо за помощь!
[EDIT]
Оказывается, селектор по умолчанию: css. Я изменил это на: xpath:
Capybara.default_selector = :xpath
Но это все еще не решает мою проблему.