在 webdriver 中执行的性能影响

Performance repercussions of execute in webdriver

我找不到这方面的任何信息,所以很好奇是否有人对来自测试的 execute() 调用进行了性能测试。据我了解,这些将 javascript 注入当前帧,执行它,然后 return 结果。

是否更好:
a) 运行 一堆较小的执行调用
b) 运行 越少越好,但调用本身做的更多

我的具体情况是使用 WebDriverIO,我需要 运行 这些以便收集应用程序中可用的调试信息,或与 local/session 存储交互。所以这意味着我可以:

a) 将每个所需的 属性 包装在执行执行的 getter 中,并且始终 returns 是反映当前的最新 属性应用程序的状态。这将导致 execute() 调用量是 运行 的 5 倍,但它们会非常小。

b) 将所有需要的属性集中到一个巨大的调用中,并在应用程序的状态发生变化时调用它。这就是我目前正在做的,但它经常需要 "refreshing" 我们的测试属性。如果测试作者忘记这样做,他们将得到错误的数据。

谢谢!

execute 函数的速度主要取决于网络延迟。我 运行 在 "local network" 场景中进行了一些测试(通过 Spectron),发现 execute 开销通常只有 10~15 毫秒。

因此,如果您也在使用本地网络,我建议您使用 "best code quality" 路线,因为您可以在一秒钟内收集一百个属性。
如果您处于 "remote networK" 场景(例如 BrowserStack),您可以考虑 "batching" 请求,以提高速度。

作为参考,这是我测试的内容:

  • 通过单个 execute 执行 1000 个客户端任务:408ms
  • 通过 1000 个 execute 调用执行 1000 个客户端任务:10347ms(每个任务添加 10ms