2013-04-08 67 views
0

我有一個測試,填寫一些領域,然後應該點擊一個按鈕。這是在加載模態窗口後完成的。但是,它似乎只是跳過它,並沒有點擊按鈕。我已經嘗試過手動調試它並自己調用它,它會正常工作,但是當我單獨運行測試時,它不會單擊它。水豚跳過click_button

Given /^I login with "(.*?)" and "(.*?)"$/ do |email, password| 
    within "#signin_fields" do 
    fill_in("custom_fields_email", :with => email) 
    fill_in("custom_fields_password", :with => password) 
    end 
    click_button("Sign In") if page.should have_selector(".btn-signin") 
end 

我甚至增加了一個檢查,以確保它在頁面上,但由於去除wait_until的,我不知道我怎樣,我應該讓頁面加載,然後確保它點擊按鈕正常。任何想法都會非常感激。

+0

您能提供反饋意見嗎? – 2013-05-13 21:20:30

回答

-1

page.should have_selector(「。btn-signin」)不會返回true或false,因此按鈕將永遠不會被點擊。只是這樣做:

click_button(".btn-signin") 

如果它應該在那裏然後測試將失敗,如果它不出現在頁面上。

+0

我原本是這樣做的,但它只是通過它,並沒有真正做按鈕按下的目的是做什麼 – justNeph 2013-04-08 18:16:55

+0

用戶單擊按鈕後應該發生什麼? – RobertH 2013-04-08 18:17:54

+0

那麼如果在點擊後放置一個調試器,點擊將不會做任何事情,但如果我手動調用它,它將按預期工作。這導致我相信點擊工作正常,但是當模式被加載時,水豚出於某種原因填充了表單,但敲擊了click_button,認爲它不存在並跳過它。 – justNeph 2013-04-08 18:19:35

0

從您的代碼下面一行是不正確的,have_selector是RSpec的匹配:

click_button("Sign In") if page.should have_selector(".btn-signin") 

相反,你應該使用任何Capybara::Node::Matchers像:

click_button("Sign In") if page.has_selector?(".btn-signin")