【问题标题】:Why is the element being tested (via protractor) clicked, but nothing happens?为什么被测试的元素(通过量角器)被点击,但没有任何反应?
【发布时间】:2017-03-15 02:50:16
【问题描述】:

我正在使用量角器 v4.0.9 和节点 v6.8.1(虽然我也在 4.6 上测试过这个问题)。我有一个测试,通过一系列按钮单击来获取表单。代码看起来像这样:

browser.get('http://someurl');

// App select button
element(by.id('btn-select-app')).click();

// portal select 
element(by.id('row-test-portal')).click();

// provisioning form button
element(by.id('btn-provisioning-form')).click();

然后是一个遍历表单并填写它的函数。如果我从头到尾运行测试(包括填写表格的功能),它会在尝试开始填写表格时失败,因为它在错误的页面上 - 也就是说,即使终端告诉我它执行了对配置按钮的点击,表单没有加载。

如果我缩短测试并仅使用您在上面的块中看到的命令运行它,它就会通过。

当我在调试模式下运行它时,我可以执行“element(by.id('btn-provisioning-form')).click();”,但它实际上并没有做任何事情——它会告诉我它执行了点击,但表单没有出现在页面上 - 我仍然在前一页上。请注意,上述测试在单击配置表单按钮之前包含另一个按钮单击,并且似乎可以正常工作。

我已经为按钮使用了不同的定位器,包括 xpath 和 css,但没有什么能让我进入配置表单。

按钮代码

<div class="col-md-1">
     <button id="btn-provisioning-form" ng-show="foo()" 
      class="btn btn-success glyphicon etc" ng-click="blah()" 
      aria-label="Provision" popover="Provision" popover-trigger="mouseenter">+</button>
</div>

其他一些注意事项 - 我已经设法使用 Selenium IDE 复制测试,当我从 Selenium IDE UI 运行该测试时,它能够单击按钮并进入表单。看起来这个问题只是在我使用量角器时才被发现。

TL;DR : Protractor 告诉我它点击了按钮,但按钮点击不会导致页面发生任何变化。当我手动单击量角器外部的按钮时,它工作得很好。为什么会这样?

【问题讨论】:

  • 嗨 Mike - 我已经测试过 .isPresent (是真的),在看了这个之后我还尝试添加 .isDisplayed - 我在测试和调试器中都这样做了,在这两种情况下都是真的然后去点击。点击仍然没有把我带到下一页,也没有失败。我还添加了 browser.waitForAngular();在点击之前得到了相同的结果。
  • 这是时间问题吗?如果您出于调试目的在单击后添加browser.sleep(5000) 会怎样?谢谢。
  • 使用谷歌浏览器手动显示相关页面。右键单击要按下的按钮并选择检查。在开发工具中,右键单击高亮元素并选择复制 -> 复制选择器。粘贴到评论中并向我们展示。

标签: selenium protractor


【解决方案1】:

不要使用普通的量角器点击,而是尝试通过 JavaScript 代码点击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多