SweetAlert2在测试时单击确认

时间:2016-06-20 15:54:51

标签: ruby-on-rails capybara poltergeist sweetalert

我试图在我的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;
  });
});

修改

看起来问题是因为s​​weetalert不可见。我已经禁用了动画,但仍然没有在点击时将其显示出来。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试sleep

page.find("#delete_dummy_" + dummy_user.id.to_s).trigger("click")
sleep(1)
click_button "Yes"