方案:用量角器一键VS两次点击
- 测试Web应用程序
- 元素需要点击即可打开另一个页面
- 设计测试有一个点击的元素
期: 有时元素需要点击一次,测试通过但如果再次运行它,同一元素需要双击
这导致我的测试失败
我通过更改命令以在量角器中双击并通过验证。
这导致了不一致,因为我不知道元素何时需要单击或双击。
任何建议表示赞赏?
方案:用量角器一键VS两次点击
期: 有时元素需要点击一次,测试通过但如果再次运行它,同一元素需要双击
这导致我的测试失败
我通过更改命令以在量角器中双击并通过验证。
这导致了不一致,因为我不知道元素何时需要单击或双击。
任何建议表示赞赏?
你可能只是需要把元素成为焦点明确通过mouseMove()
,然后发出click()
动作:
browser.actions().mouseMove(elm).click().perform();
不一致可能是因为元素是还没有准备好点击。所以你需要等到元素变成可点击并点击它。下面的代码将帮助您实现一致性。
Code Snippet:
var EC = protractor.ExpectedConditions;
var elementToBeClick=element(locator);
var timeOut=10000;
browser.wait(EC.elementToBeClickable(elementToBeClick), timeOut).
thenCatch(function() {
assert.fail(' target element is not clickable');
});
elementToBeClick.click();
您可以使用browser.executeScripts将本地JavaScript代码注入浏览器并单击所需的按钮。这将是你传递到功能
尝试下面的代码所需要的元素上执行的单击事件,
var elementToBeClick=element(locator);
browser.executeScript("arguments[0].click()",elementToBeClick.getWebElement())
请注意,它与常规点击不同:http://stackoverflow.com/questions/34562061/webdriver-click-vs-javascript-click。 – alecxe
我同意。但在某些情况下,用户可以点击按钮,但硒不能使用。这些场景可以使用本地点击事件来处理 –
@ alecxe:这就是我们如何在做它仍然有问题 – Kevin
@Kevin好吗,你如何引入[自定义睡眠动作](http://stackoverflow.com/questions/32789460/custom-browser-actions-in-protractor)并像这样做:'browser.actions()。mouseMove(elm )。睡眠(50)。单击()执行();'。当然,这并不理想,但看看它是否真的有帮助。 – alecxe