這是一個Rspec功能。爲什麼Capybara/Rspec無法在Sweet Alert模式中找到該按鈕,但has_selector返回true?
given (:send_selector){ 'button.confirm'}
feature "when talent has not applied." do
given (:apply_button) { find('button[data-selector="offer-apply-button"]') }
before(:each) { visit offer_path(offer.id) }
scenario "Talent applies to offer with default cv", js: true do
apply_button.click
expect(page).to have_selector(send_selector)
find_button(send_selector).click
wait_for_ajax
# other expectations
end
end
它通過期望有選擇但隨後引發錯誤
Capybara::ElementNotFound:
Unable to find button "button.confirm"
指着符合find_button(send_selector).click
我使用page.find_button(send_selector).click
和find_button(send_selector).trigger('click')
另外嘗試,但仍是第一拋出錯誤,第二個似乎什麼都不做,因爲負責該操作的控制器永遠不會被調用,並且當我在下一個屏幕截圖時模式仍然存在東北。
我運行了poltergeist調試器,html出現在頁面上。
這是(使用save_screenshot()
法)
嗨托馬斯,你是對的,find_button不採取CSS選擇器。儘管如此,我運行了這一次在答案中發佈的測試,而沒有「睡眠1」,但失敗了。 – juliangonzalez
@juliangonzalez如果它是相同的錯誤,那麼它可能意味着你需要增加Capybara.default_max_wait_time幾秒鐘。然而,如果它是一個不同的錯誤(關於鼠標點擊的東西會碰到不同的元素),那麼這是因爲模式仍然是動畫,並且您將需要睡眠或更好,但在測試模式中禁用動畫,這將加快您的測試並且防止一些潛在的薄弱 –