我试图在我的rails测试中单击sweetalert弹出窗口,但它一直告诉我它找不到按钮。我的代码如下所示:
self.driver.get(targeturl)
#To check when the first page is loaded, a first wait goes here
WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
login = self.driver.find_element_by_name("login")
login.send_keys("user1")
password = self.driver.find_element_by_name("password")
password.send_keys("password123")
login.submit()
#To check when the second page has finished loaded, another wait goes here
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
我收到了错误:
it "should delete dummy user", js: true do
user = FactoryGirl.create(:user)
login user
FactoryGirl.create(:course, :with_user_created)
dummy_user = FactoryGirl.create(:dummy_user)
visit booking_index_path("en")
current_path.should eq(booking_index_path("en"))
page.should have_content(dummy_user.name)
page.find("#delete_dummy_" + dummy_user.id.to_s).trigger("click")
click_button "Yes"
page.should have_no_content(dummy_user.name)
end
我这样称呼sweetalert:
Capybara::ElementNotFound:
Unable to find button "Yes"
知道为什么Capybara找不到按钮?我点击了“#delete_dummy_”+ dummy_user.id.to_s“后试图打印孔页面,似乎按钮就在那里:
var modal_open = false;
$( document ).ready(function() {
$(".alert-sweet").on('click', function(e){
if (modal_open){
modal_open = false;
return true;
}
e.preventDefault();
link = $(this);
swal({
title: "<%= t("you_sure") %>",
confirmButtonText: "<%= t("t_yes") %>",
cancelButtonText: "<%= t("t_no") %>",
type: "warning",
showCancelButton : true,
confirmButtonColor : "#DD6B55",
closeOnConfirm : false
}).then(function() {
modal_open = true;
link.trigger('click');
}, function(dismiss) {
if (dismiss === 'cancel') {
modal_open = false;
}
});
return false;
});
});
修改
看起来问题是因为sweetalert不可见。我已经禁用了动画,但仍然没有在点击时将其显示出来。有什么建议吗?
答案 0 :(得分:0)
尝试sleep
:
page.find("#delete_dummy_" + dummy_user.id.to_s).trigger("click")
sleep(1)
click_button "Yes"