脚本标记未在Capybara / PhantomJS中呈现

时间:2015-04-22 21:46:10

标签: rspec capybara phantomjs stripe-payments poltergeist

我正在使用Capybara与PhantomJS进行一些集成测试。我们测试的一部分是一个订阅表单,它使用Stripe嵌入表单来呈现付费按钮。在我们的测试中,当我运行print page.html时,这是在输出中:

<form accept-charset="UTF-8" action="/subscription" 
class="plan PlusMonthly" id="plan-PlusMonthly" method="post">
    <div style="margin:0;padding:0;display:inline"></div>
    <input name="utf8" type="hidden" value="✓"></div>
    <input id="plan_id" name="plan_id" type="hidden" value="3">


    <script src="https://checkout.stripe.com/checkout.js" 
        class="stripe-button" 
        data-key="my_test_key" 
        data-label="$9.95" 
        data-name="Subscribe" 
        data-description="Billed per month. Cancel at any time." 
        data-image="/assets/avatar_t.png" 
        data-amount="995" 
        data-email="user2@gmail.com" 
        data-allow-remember-me="false" 
        data-panel-label="Pay {{amount}} per month">
    </script>
</form>

但是,在此页面的实时呈现版本中,<form>元素还包括:

<button class="stripe-button-el" type="submit" style="visibility: visible;">
    <span style="display: block; min-height: 30px;">$9.95</span>
</button>

因此,任何需要点击按钮的测试(例如within('form.PlusMonthly') {click_button('$9.95')})都无法找到它,RSpec会发出此错误:

Failure/Error: subscribe
Capybara::ElementNotFound:
  Unable to find button "$9.95"

版本

Capybara:2.4.1

恶作剧者:1.5.0

PhantomJS:1.9.7

1 个答案:

答案 0 :(得分:0)

该按钮标有'$ 49.95',您正试图点击'$ 9.95'。也许我错过了一些我没有看到的东西。