我们的复选框html代码看起来总是像这个
<div id="paymentCheckBoxesMod" class="c-form__checkbox-container u-spacing__margin-bottom--16 u-spacing__margin-top--16">
<input type="checkbox" id="supplementaryAgreement" aria-describedby="paymentsCheckboxLabel">
<label for="supplementaryAgreement">
</label>
<div id="paymentsCheckboxLabel">
Jag godkänner Storytels <span id="purchasetermspopup">Köpvillkor</span> & <span id="privacypolicypopup">Integritetspolicy</span>
</div>
</div>
我总是使用标签的for="supplementaryAgreement"
来定位元素,因为如果我使用输入的id="supplementaryAgreement"
,我最终不得不在定位元素之前等待超时持续时间。有人知道为什么吗?
因此,在我必须为iframes工作之前,这一直很好,尽管我已经切换回大型机,但如果我现在使用for="supplementaryAgreement"
,我会得到DOM树上没有匹配项的错误。它仍然可以使用id="supplementaryAgreement"
,但必须等待它超时似乎没有效率。
我认为这个问题的原因在于复选框的复杂标记。复选框似乎与label::after
元素重叠,因此TestCafe无法正确找到该复选框。另一个问题是label[for=supplementaryAgreement]
的height
等于0。
在这种情况下,您减少选择器超时的想法是一个很好的解决方法。它不起作用,因为存在语法错误。请尝试以下方法:Selector('#supplementaryAgreement', { timeout: 1000 })