gpt4 book ai didi

javascript - Protractor 卡在元素单击上

转载 作者:行者123 更新时间:2023-11-28 03:49:46 30 4
gpt4 key购买 nike

我有一个 Angular 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();
});

其他信息:

  • 我尝试过页面上的其他按钮 - 相同的结果
  • 虽然我没有收到任何错误,但大约 60 秒后我确实收到了 F在输出中,表明测试失败,但它永远不会移动到下一个测试
  • 大约 2 分钟后,它开始吐出 ERROR:process_metrics.cc(105)] NOT IMPLEMENTED我认为这不是问题的根源(类似的无关投诉 here )

最佳答案

终于找到原因了。我正在使用 multiCapability 来测试各种浏览器和大小。不幸的是,我的第一个能力是使用移动模拟:

   chromeOptions: {
'mobileEmulation': {
'deviceName': 'iPhone 4'
},

这是导致点击完全挂起的触发器。以下是有关哪些有效、哪些无效的更多信息。

适用于非移动仿真,挂起于移动仿真

loginButton.click().then(() => { console.log("Clicked, yo!"); });

与移动模拟配合使用

browser.touchActions().tap(loginButton).perform().then(() => { console.log("Tapped, yo!"); });

不幸的是,无论是什么原因导致 Protractor 完全挂起并且没有给出任何错误。转向下一个功能会让这一点变得更加明显。我需要处理的后续问题是,是否所有移动模拟测试都需要使用 tap() 代替 click()...

关于javascript - Protractor 卡在元素单击上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104983/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com