代码之家  ›  专栏  ›  技术社区  ›  BRass

挂在图元上的量角器单击

  •  1
  • BRass  · 技术社区  · 8 年前

    我有一个角度5。x项目。我正在用量角器执行一些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 )
    1 回复  |  直到 8 年前
        1
  •  1
  •   BRass    8 年前

    我终于找到了原因。我正在使用 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() ...