我有一个复选框,其中的文字包含以下链接:
<div id="agreementDiv" class="cust-pad-bot1">
<input id="inputAgreement" type="checkbox">
<label for="inputAgreement">I have read and agree to the <a target="_blank" href="http://example.com/terms-and-conditions"><u>Terms & Conditions</u></a></label>
</div>
&#13;
(请注意,此片段只是实际实现的草图。删除了CSS类。)
使用Nightwatch.js我想自动选中复选框。在我的UI中,单击标签文本随后会选中该复选框。
browser
.useXpath()
.waitForElementPresent(`//*[@id="agreementDiv"]/label`, 10000)
.click(`//*[@id="agreementDiv"]/label`)
但是当我尝试使用Nightwatch时,它会点击链接并在新标签页中打开链接。但是没有单击该复选框。使用css / xpath直接单击复选框也不起作用。如果有人能解释如何防止夜班人员点击儿童锚,我感激不尽。
谢谢。
答案 0 :(得分:0)
您已编写代码以单击标签而不是复选框。更改xpath。但在使用xpath选择器之前使用方法browser.useXpath();
。
browser
.waitForElementPresent(`//*[@id="agreementDiv"]/input`, 10000)
.click(`//*[@id="agreementDiv"]/input`)
使用css选择器(夜视仪中的默认选择器):
browser
.waitForElementPresent(`#agreementDiv>input`, 10000)
.click(`#agreementDiv>input`)
这应该可以解决您的问题。如果单击复选框,将选中复选框。
答案 1 :(得分:0)
我找到了一个使用nightwatch-custom-commands-assertions第三方模块(https://github.com/maxgalbu/nightwatch-custom-commands-assertions)的解决方案。此模块添加了一组自定义夜间监视命令,其中包含jqueryClick
函数(https://github.com/maxgalbu/nightwatch-custom-commands-assertions)。我调用此函数提供复选框的xpath,它运行良好。使用默认的click
功能对我来说不起作用。