当被告知单击复选框标签时,Nightwatch.js会点击嵌套锚点

时间:2017-05-14 12:16:24

标签: javascript nightwatch.js browser-automation

我有一个复选框,其中的文字包含以下链接:



<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 &amp; Conditions</u></a></label>
</div>
&#13;
&#13;
&#13;

(请注意,此片段只是实际实现的草图。删除了CSS类。)

使用Nightwatch.js我想自动选中复选框。在我的UI中,单击标签文本随后会选中该复选框。

browser
.useXpath()
.waitForElementPresent(`//*[@id="agreementDiv"]/label`, 10000)
.click(`//*[@id="agreementDiv"]/label`)

但是当我尝试使用Nightwatch时,它会点击链接并在新标签页中打开链接。但是没有单击该复选框。使用css / xpath直接单击复选框也不起作用。如果有人能解释如何防止夜班人员点击儿童锚,我感激不尽。

谢谢。

2 个答案:

答案 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功能对我来说不起作用。