2015-03-31 14 views
7

Capybara ve Chrome'u varsayılan selenum tarayıcım olarak kullanıyorum.Rails + Capybara: 'Beklenmeyen Uyarı Açık' Selenyum Sürücüsü için

Testi:

it "is successful with deleting a user", js: true do 
    visit '/users' 
    expect(User.count).to eq(1) 
    expect(user.email).to eq("[email protected]") 
    expect(page).to have_content("Manage Users") 
    click_link 'Delete User' 
    page.driver.browser.confirm.accept 
    user.reload 
    visit '/users' 
    expect(User.count).to eq(0) 
end 

benim test için bu hatayı alıyorum:

page.driver.browser.switch_to.confirm 
page.driver.browser.switch_to.accept 
page.driver.browser.confirm.accept 

Başka varyasyonlar I: Benim testte aşağıdaki denedi

Failure/Error: visit '/users' 
Selenium::WebDriver::Error::UnhandledAlertError: 
    unexpected alert open 

testimle denemeli mi?

cevap

14

böyle bir accept_alert bloğun içine uyarı istemi başlatır kodu sarma deneyin:

it "is successful with deleting a user", js: true do 
    visit '/users' 
    expect(User.count).to eq(1) 
    expect(user.email).to eq("[email protected]") 
    expect(page).to have_content("Manage Users") 

    # Change is here: 
    accept_alert do 
    click_link 'Delete User' 
    end 

    user.reload 
    visit '/users' 
    expect(User.count).to eq(0) 
end 

ben biraz endişeliyim silerken bir onay yerine bir uyarı kullanmak isteyeceği Bir kaynak, ama bu size kalmış. Bir uyarı sadece size bir şey olacağını söyleyecektir, bu arada bir onaylama, kullanıcının OK yerine iptal düğmesine basarak fikrini değiştirmesine izin verir. Bir uyarı modal yerine bir onay modal kullanırsanız, accept_alert bölümünün accept_confirm olarak değiştirilmesi gerekir.

Daha fazla bilgi için the modal documentation rubydoc'a bakın.

İlgili konular