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

量角器:只能为页面启用虚拟时间,不能为工作线程启用虚拟时间

  •  2
  • Royalsmed  · 技术社区  · 6 年前

    在我的angular应用程序中,我将一些繁重的逻辑外包给了一个网络工作者。 在使用Chrome Headless中的量角器运行e2e测试之后,我在量角器执行的每个操作上都得到下面的错误。注意,e2e的结果仍然很好。只有这个恼人的错误日志。

    [1003/234747.472:ERROR:inspector_emulation_agent.cc(537)] Can only enable virtual time for pages, not workers
    

    它本身的错误来自铬

    Response InspectorEmulationAgent::AssertPage() {
      if (!web_local_frame_) {
        LOG(ERROR) << "Can only enable virtual time for pages, not workers";
        return Response::InvalidParams(
          "Can only enable virtual time for pages, not workers");
      }
      return Response::OK();
    }
    

    https://chromium.googlesource.com/chromium/src/third_party/+/master/blink/renderer/core/inspector/inspector_emulation_agent.cc

    1 回复  |  直到 6 年前
        1
  •  4
  •   Sergey Pleshakov    6 年前

    capabilities 对象(或 multiCapabilities 如果在多个浏览器上运行测试)。除其他外,这个对象还有一个属性 args 它接受参数数组

    capabilities: {
        "browserName": "chrome",
        "chromeOptions": {
            "args": ["incognito","--window-size=1920,1080","disable-extensions","--no-sandbox","start-maximized","--test-type=browser"]
        }
    }
    

    删除 "--no-sandbox"

    这个家伙所做的是允许您的测试从一个远程容器(即在Jenkins中)运行。同时,如果在计算机上运行测试时包含参数,则会产生如下所述的副作用 Chrome Instances don't close after running Test Case in Protractor


    我想这也会导致你的错误。所以“只能启用虚拟时间…”可能表示没有“虚拟”容器,只有本地进程。

    我对这个问题的临时解决方案是总是从本地配置中删除这个参数,而不是提交它。

    我的永久解决方案是创建一个可选标志 isHost 通过带有默认值的咕噜声 false true 我推