选择器将允许自动提交按钮单击

时间:2015-05-18 16:46:19

标签: javascript testing selenium protractor end-to-end

我有一个'提交'在另一个动作发生后变为可点击的按钮。在这种情况下,用户必须单击TOS复选框,然后该按钮变为可单击。我找不到一个允许我自动点击“提交”按钮的选择器。单击“提交”按钮时,将出现确认窗口。

我使用Protractor作为Webstorm的测试运行者。目前,测试通过但是我没有看到单击“提交”按钮并且没有创建新帐户。我可以添加一个断言,但我需要知道如何找到实际点击的元素。启动自动化后,XPath和CSS似乎不起作用。

这就是我尝试编辑的内容:

element(by.xpath('//*[@id="formHolderId"]/div/div/div[3]/span/button[2]')).click();

这是在检查TOS复选框之前Inspect Element显示的内容:

<button data-ng-click="modalOptions.ok(formData)" data-ng-disabled="formHolder.$invalid || formHolder.formHolder.$invalid" data-ng-if="modalOptions.actionButtonText" type="submit" class="btn btn-sm btn-submit ng-binding ng-scope ng-click-active" disabled="disabled">
        Submit</button>

在检查TOS复选框后,这就是Inspect Element的样子:

<button data-ng-click="modalOptions.ok(formData)" data-ng-disabled="formHolder.$invalid || formHolder.formHolder.$invalid" data-ng-if="modalOptions.actionButtonText" type="submit" class="btn btn-sm btn-submit ng-binding ng-scope ng-click-active">
        Submit</button>

虽然没有勾选TOS复选框,但是有一个disabled="disabled",无论如何,我似乎无法从中获取可点击的元素。

1 个答案:

答案 0 :(得分:1)

单击TOS复选框以启用该按钮,按文本找到它并单击:

var submitButton = element(by.xpath("//button[contains(., 'Submit')]"));
submitButton.click();

如果出于某种原因,您无法启用该按钮,因此,使用element.click()单击它,您可以通过执行javascript来模拟点击:

browser.executeScript("arguments[0].click();", submitButton.getWebElement());