我有一个有角度的5.x项目。我试图用Protractor执行一些e2e测试。我运行了一些简单的测试,只需检查浏览器标题并检查是否存在基本元素。
我现在正尝试在与页面交互的地方进行更复杂的测试。不幸的是,点击一个元素会导致一个令人讨厌的挂起,永远不会回来(甚至在30-60秒之后)。可能导致这种情况的任何想法,或者我甚至可以排除故障的方法?
有效的测试:
it('should have correct title', () => {
expect(browser.getTitle()).toEqual("My App");
});
it('should have a login button', () => {
let loginButton = element(by.id('btnLogin'));
var untilLoginIsVisible = ExpectedConditions.presenceOf(loginButton);
browser.wait(untilLoginIsVisible, 20000);
expect(loginButton.isDisplayed()).toEqual(true);
});
测试挂起 - 注意上面成功测试的相似性
it('show login transition', () => {
let loginButton = element(by.id('btnLogin'));
var untilLoginIsVisible = ExpectedConditions.presenceOf(loginButton);
browser.wait(untilLoginIsVisible, 20000);
//EITHER ONE OF THESE FAILS, AND JUST HANGS FOREVER
loginButton.click().then(() => { console.log("Clicked, yo!"); });
browser.actions().mouseMove(loginButton).mouseDown(loginButton).mouseUp().perform();
});
其他信息:
F
,表示测试失败,但它从未进入下一个测试ERROR:process_metrics.cc(105)] NOT IMPLEMENTED
,我认为这不是问题的根源(类似的无关投诉here)答案 0 :(得分:0)
我终于找到了原因。我使用multiCapabilities
来测试各种浏览器&大小。不幸的是,我的第一个功能是使用移动仿真:
chromeOptions: {
'mobileEmulation': {
'deviceName': 'iPhone 4'
},
这是使点击完全挂起的触发器。以下是有关哪些有效以及哪些无效的更多信息。
适用于非移动模拟,依赖于移动模拟
loginButton.click().then(() => { console.log("Clicked, yo!"); });
适用于移动设备模拟
browser.touchActions().tap(loginButton).perform().then(() => { console.log("Tapped, yo!"); });
不幸的是,无论是什么导致这个量角器完全悬挂而且没有出现任何错误。转向下一个功能会使这更加明显。我需要处理的后续问题是,如果所有移动仿真测试都需要使用tap()
代替click()
...