【问题标题】:Speeding up mouse with Selenium WebDriver使用 Selenium WebDriver 加速鼠标
【发布时间】:2012-05-08 15:06:58
【问题描述】:

我继承了一些 Selenium Webdriver 代码(Ubuntu 11.10、Xvfb + Selenium 2.19.0 和 Firefox 10.0.2,因为这是我能够在实际安装的时间内找到的唯一组合。)

注意:我没有使用旧的 Selenium 1.0 系统,大多数文档似乎都集中在该系统上。

我的测试运行非常缓慢。简单的鼠标移动需要半秒以上。

查看(未记录?!)/tmp/native_ff_events_log 文件,我发现每个鼠标操作都被分成更小的部分:

D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(307) ---------- starting mouseMoveTo: 0x7fbad37546a0---------
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(328) From: (39, 169) to: (350, 86)
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(329) Distance: 321 steps: 64
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (39, 169)
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697248
D14:14:37:080 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (43, 167)
D14:14:37:080 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697258
D14:14:37:090 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (48, 166)
D14:14:37:090 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697268
D14:14:37:100 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (53, 165)
D14:14:37:100 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697278
D14:14:37:110 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (58, 163)

似乎有一些故意放慢速度,类似于旧版 Selenium 的 setMouseSpeed(pixels),它将拖放操作分解为 10 个像素的子移动。

我没有使用拖放操作。另外,我相信这种方法不再适用于我。

我不认为这些子运动是必要的,删除它们可能会大大加快运行速度。

有没有办法在 Selenium 2 的 Webdriver 中增加鼠标步长的大小?

【问题讨论】:

    标签: selenium webdriver


    【解决方案1】:

    奇怪,查看源代码我发现了两个使 mouseMoveTo() 如此缓慢的值:

    const int stepSizeInPixels = 5;
    

    http://code.google.com/p/selenium/source/browse/trunk/cpp/webdriver-interactions/interactions_linux_mouse.cpp?r=13310#278

      const int timePerEvent = 10 /* ms */;
    

    http://code.google.com/p/selenium/source/browse/trunk/cpp/webdriver-interactions/interactions_linux_mouse.cpp?r=13310#270

    不幸的是,无法在运行时更改此值,因为它们是硬编码的。

    当鼠标需要从 A 点移动到 B 点时,它会使用 5 像素的步长,间隔为 10 毫秒。我的测试用例的一个步骤是花费大约 1.2 秒来执行一次简单的 click()

    我重新编译了 firefox 扩展,将 stepSizeInPixels 更改为 50,将 timePerEvent 更改为 5ms。现在我的测试用例用了 18 秒,比原来的扩展少了 8 秒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      相关资源
      最近更新 更多