量角器问题:click()函数不起作用

时间:2019-10-18 21:04:01

标签: angular protractor end-to-end

我有一个问题,很多e2e黄瓜测试用例都使用了按钮单击功能。我可以获取按钮的文本。但是,如果单击它不会重定向或加载任何内容。

var next = element(by.cssClass('buttonclass'));
next.click();

上面的代码不起作用,但是如果我使用的是browser.executeScript("arguments[0].click();",next ) 则点击有效。我无法更改代码,因为该代码已被多个测试用例使用。...是什么原因?

3 个答案:

答案 0 :(得分:0)

试试看

var next = element(by.css('buttonclass'));

答案 1 :(得分:0)

构建测试时,仅通过页面上的“单个”元素进行查找/交互非常重要。

意思是,如果开始看到“ 多个元素”,则必须按定位符查找元素:css,xpath ..等,结果只能是“ one ”元素。找到,将使用第一个。”,这表明您需要重新定位。

另一种好的做法是使用“等待条件”。

https://www.protractortest.org/#/api?view=ProtractorExpectedConditions

点击前,请确保满足元素条件:elementToBeClickable

如果您有复杂的网站,则量角器命令并不总是可以胜任。在这种情况下,请使用javascript执行程序。

答案 2 :(得分:0)

为什么正在发生

例如,您所指的元素是包装器

<div id="id">
  text
  <button></button>
</div>

在这种情况下,如果您在UI中单击div,则button将获得点击,因为它与按钮重叠。用量角器进行操作时,它会完全单击您指定的元素。因此,您可以从div#id获取文本,但是如果单击它,则表明此元素不可单击。这种脚本browser.executeScript("arguments[0].click();",next )并不关心页面布局,即使元素在UI中不可见,也会单击该元素

解决方案

您必须能够控制脚本,如果您无法在一处更改点击,那么您的代码就不够灵活,您需要考虑如何改进