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

Protractor issue: click() function isn't working

我有一个 senario 按钮点击功能被很多 e2e cucumber 测试用例使用。我能够获取按钮的文本。但是如果点击它不会重定向或加载任何内容。

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

以上代码无效,但如果我使用 browser.executeScript("arguments[0].click();",next ) 然后点击工作。我无法更改代码,因为它被多个测试用例使用....会是什么原因?

试试这个

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

在构建测试时,它对 find/interact 非常重要,仅在您的页面上使用 "single" 元素。

意思是,你必须通过定位符来查找元素:css、xpath.. 等等,结果只有“one”元素,如果你开始请参阅“找到多个元素,将使用第一个..”,这表明您需要修改定位器。

另一个好的做法是使用 "wait conditions"。

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

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

如果您有复杂的网站,并不总是量角器命令可以完成这项工作。在那种情况下使用 javascript 执行器。

为什么它正在发生

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

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

在这种情况下,如果您单击 UI 中的 divbutton 将获得点击,因为它与按钮重叠。当您使用量角器执行此操作时,它会准确点击您指定的元素。因此,您可以从 div#id 获取文本,但如果您单击它,它会告诉您该元素不可单击。这种类型的脚本 browser.executeScript("arguments[0].click();",next ) 不关心页面布局,即使元素在 UI

中不可见,也会单击该元素

解决方案

你必须能够控制你的脚本,如果你不能在一个地方改变点击,那么你的代码不够灵活,你需要考虑如何改进它