Rspec SweetAlert Javascript插件防止水豚在测试期间继续进入下一页

Rspec SweetAlert Javascript插件防止水豚在测试期间继续进入下一页,rspec,capybara,poltergeist,sweetalert,Rspec,Capybara,Poltergeist,Sweetalert,我正在添加一个页面,这样,如果客户忘记上传文件,在继续下一页之前,当他们单击“继续”按钮时,会使用sweetalert为他们加热 按钮html: <a href="/checkout/address" class="checkout-now continue-to-checkout">Checkout Now &gt;</a> 代码运行良好。然而,我在通过rspec和capybara进行测试时遇到了问题。当我试图继续进入下一页时,当我检查im是否在下一页时,测试

我正在添加一个页面,这样,如果客户忘记上传文件,在继续下一页之前,当他们单击“继续”按钮时,会使用sweetalert为他们加热

按钮html:

<a href="/checkout/address" class="checkout-now continue-to-checkout">Checkout Now &gt;</a>
代码运行良好。然而,我在通过rspec和capybara进行测试时遇到了问题。当我试图继续进入下一页时,当我检查im是否在下一页时,测试失败,水豚/poltergeist出错

rspec/capybara测试代码:

click_link "Checkout Now"
find(".sweet-alert").should have_content("Missing Uploads") #wait until sweet alert pops up
click_button "I understand, proceed anyway"
#page.execute_script('$(".confirm").click()')
page.should have_content("Checkout: Delivery")
错误消息:

2) checkout should be able to go through checkout via shipping
     Failure/Error: page.should have_content("Checkout: Delivery")
       expected #has_content?("Checkout: Delivery") to return true, got false

当我使用click_按钮时,水豚似乎记录了点击,因为它不会错误地说按钮不存在,但它永远不会继续到下一页。被注释掉的强制jquery代码也不起作用。如果我从代码中删除sweetalert(以及测试中的单击),那么不管测试通过了什么,用户都会继续

如果使用poltergeist,请使用.trigger(“单击”)而不是单击或单击按钮。在《恶作剧》中有一个bug,点击和点击按钮不能给出一致的结果(似乎是在元素进行动画时)。

如果在“有内容”预期之前添加“睡眠10”,会发生什么情况。“那么它通过了吗?”菲尔,我刚试过。“page.should have_content(“Checkout:Delivery”)”仍然失败只是猜测:可能
$(HtmlIds.cart.missingUploadsTag)。长度
为零?这将阻止SweetAlert代码执行。如果sweet alert代码由于条件失败而未执行,则.click()中不会发生任何事情,href将继续执行/checkout/address。这将导致“查找”(.sweet alert”)。应包含_内容(“缺少上载”)失败。根据您的建议,作为一项合理性检查,我删除了条件,但仍然得到相同的错误。“我理解,无论如何继续”按钮是否有自己的HTML,您可以与我们共享?也许你可以在它上面使用不同的查找器来确保点击正常工作。也许你需要点击一个div或者别的什么。我会小心地假设你的点击成功仅仅是因为点击按钮没有出错。
2) checkout should be able to go through checkout via shipping
     Failure/Error: page.should have_content("Checkout: Delivery")
       expected #has_content?("Checkout: Delivery") to return true, got false