我想弄清楚如何用黃瓜/水豚寫一個oAuth/Twitter登錄功能。其中的一部分包括訪問頁面:http://www.twitter.com/sessions/new並填寫用戶名,密碼,然後點擊'登錄'按鈕。預期這最後一步不工作,該網頁的HTML代碼如下所示(位於法國):黃瓜/水豚 - 如何使用XPath搜索特定的按鈕?
<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
這一發現(:XPath中,..)線不能正常工作。我試圖把一個「/ S」(正則表達式空格字符),但我仍然收到此錯誤信息:
Unable to find '//button[@class="submit\sbutton"]' (Capybara::ElementNotFound)
我也試過:
xpath_for("submit button")
但我得到一個堆棧級別太深錯誤!
我對自己的正則表達式/ xpath元素的查找技能並不是很有信心,所以請告訴我我的代碼出了什麼問題,以及如何找到那個按鈕?
非常感謝您的幫助!
[編輯]
原來的默認選擇器是:CSS。我把它改爲:XPath的:
Capybara.default_selector = :xpath
但它仍然沒有解決我的問題。
一個類不能包含空格,你所擁有的是一個帶有兩個類'submit'和'button'的按鈕元素 – 2013-06-07 20:42:36