【发布时间】: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