【问题标题】:Selector that will allow automatic Submit button click允许自动单击提交按钮的选择器
【发布时间】:2015-05-18 16:46:19
【问题描述】:

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

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

这是我要编辑的内容:

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

这是检查元素在 TOS 复选框被选中之前显示的内容:

<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 复选框后检查元素的样子:

<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",但无论哪种方式,我似乎都无法从中获得可点击的元素。

【问题讨论】:

  • 定义“我似乎无法从中获得可点击元素”的意思。您的代码是什么,您希望它做什么以及它会做什么?
  • 我需要能够点击“提交”按钮。我似乎无法通过 XPath、CSS 或任何其他 element(by...) 语句获得它。
  • 我的水晶球说问题出在第 42 行。如果您比水晶球更信任开发人员,请发布您的代码,并说明您希望它做什么以及它会做什么。
  • 编辑您的问题。不要在 cmets 中发布代码。发布所有相关代码。请为您的按钮分配一个 ID 并按 ID 获取按钮。如果您的代码有效,那么只要您对页面布局进行微小更改,它就会开始中断。
  • 希望这样更好,抱歉。

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


【解决方案1】:

点击TOS复选框启用按钮,通过文本定位并点击:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2018-08-01
    • 2014-07-29
    相关资源
    最近更新 更多