【发布时间】:2022-02-05 01:46:00
【问题描述】:
我正在使用 Puppeteer 测试我的 Stripe 结帐流程。 我设法填写了表格,但是我无法让 Puppeteer 点击“开始试用”按钮,这个:
按钮的html如下:
<button class="SubmitButton SubmitButton--complete" type="submit" data-testid="hosted-payment-submit-button" style="background-color: rgb(0, 116, 212); color: rgb(255, 255, 255);"><div class="SubmitButton-Shimmer SubmitButton--complete-Shimmer" style="background: linear-gradient(to right, rgba(0, 116, 212, 0) 0%, rgb(58, 139, 238) 50%, rgba(0, 116, 212, 0) 100%);"></div><div class="SubmitButton-TextContainer"><span class="SubmitButton-Text SubmitButton-Text--current Text Text-color--default Text-fontWeight--500 Text--truncate" aria-hidden="false">Start trial</span><span class="SubmitButton-Text SubmitButton-Text--pre Text Text-color--default Text-fontWeight--500 Text--truncate" aria-hidden="true">Processing...</span></div><div class="SubmitButton-IconContainer"><div class="SubmitButton-Icon SubmitButton-Icon--current"><div class="Icon Icon--md Icon--square"><svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" focusable="false"><path d="M3 7V5a5 5 0 1 1 10 0v2h.5a1 1 0 0 1 1 1v6a2 2 0 0 1-2 2h-9a2 2 0 0 1-2-2V8a1 1 0 0 1 1-1zm5 2.5a1 1 0 0 0-1 1v2a1 1 0 0 0 2 0v-2a1 1 0 0 0-1-1zM11 7V5a3 3 0 1 0-6 0v2z" fill="#ffffff" fill-rule="evenodd"></path></svg></div></div><div class="SubmitButton-Icon SubmitButton-SpinnerIcon SubmitButton-Icon--pre"><div class="Icon Icon--md Icon--square"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" focusable="false"><ellipse cx="12" cy="12" rx="10" ry="10" style="stroke: rgb(255, 255, 255);"></ellipse></svg></div></div></div><div class="SubmitButton-CheckmarkIcon"><div class="Icon Icon--md"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="14" focusable="false"><path d="M 0.5 6 L 8 13.5 L 21.5 0" fill="transparent" stroke-width="2" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div></button>
我正在尝试点击这个按钮:
await page.click(".SubmitButton");
但是,它会抛出一个错误:
节点要么不可点击要么不是 HTMLElement
我尝试使用按钮的多个子项的选择器单击它,但没有成功。 我去浏览器的控制台输入:
var btns = document.getElementsByClassName("SubmitButton");
btns[0].click()
并且它只是工作(单击按钮并重定向到成功页面),因此选择器必须是正确的。 我也尝试添加不同的超时,但也没有用。
任何想法如何解决这个问题?
【问题讨论】:
-
我不确定如何使用 Puppeteer 执行此操作,但使用 Stripe 进行自动化测试通常比自动点击页面更简单。你能告诉我更多关于你在这里测试什么吗?
-
我只是在为我的应用程序做端到端测试,所以在这里点击页面是一种强制性的。我正在测试的部分之一是结帐过程,即从用户在我的应用程序中单击“订阅”到在 Stripe 中成功结帐过程后的成功页面。我对每个单独的部分都有单独的单元测试和集成测试。
标签: javascript testing stripe-payments puppeteer