量角器问题: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 中的 div
,button
将获得点击,因为它与按钮重叠。当您使用量角器执行此操作时,它会准确点击您指定的元素。因此,您可以从 div#id
获取文本,但如果您单击它,它会告诉您该元素不可单击。这种类型的脚本 browser.executeScript("arguments[0].click();",next )
不关心页面布局,即使元素在 UI
中不可见,也会单击该元素
解决方案
你必须能够控制你的脚本,如果你不能在一个地方改变点击,那么你的代码不够灵活,你需要考虑如何改进它
我有一个 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 中的 div
,button
将获得点击,因为它与按钮重叠。当您使用量角器执行此操作时,它会准确点击您指定的元素。因此,您可以从 div#id
获取文本,但如果您单击它,它会告诉您该元素不可单击。这种类型的脚本 browser.executeScript("arguments[0].click();",next )
不关心页面布局,即使元素在 UI
解决方案
你必须能够控制你的脚本,如果你不能在一个地方改变点击,那么你的代码不够灵活,你需要考虑如何改进它