我正在使用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
答案 0 :(得分:0)
该按钮标有'$ 49.95',您正试图点击'$ 9.95'。也许我错过了一些我没有看到的东西。