我有一个问题,很多e2e黄瓜测试用例都使用了按钮单击功能。我可以获取按钮的文本。但是,如果单击它不会重定向或加载任何内容。
var next = element(by.cssClass('buttonclass'));
next.click();
上面的代码不起作用,但是如果我使用的是browser.executeScript("arguments[0].click();",next )
则点击有效。我无法更改代码,因为该代码已被多个测试用例使用。...是什么原因?
答案 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中不可见,也会单击该元素
解决方案
您必须能够控制脚本,如果您无法在一处更改点击,那么您的代码就不够灵活,您需要考虑如何改进