【发布时间】:2011-04-22 09:40:06
【问题描述】:
我正在尝试弄清楚如何使用 Cucumber/Capybara 编写 oAuth/Twitter 登录功能。其中一部分包括访问页面: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-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 元素查找技能并不十分自信,所以请告诉我我的代码有什么问题以及如何找到该按钮?
非常感谢你帮助我!
[编辑]
原来默认选择器是 :css。我把它改成 :xpath:
Capybara.default_selector = :xpath
但它仍然没有解决我的问题。
【问题讨论】:
-
一个类不能包含空格,你有一个按钮元素,有两个类'submit'和'button'
标签: cucumber xpath capybara twitter-oauth