2

我继承了一些 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 中增加鼠标步的大小?

4

1 回答 1

3

奇怪的是,查看源代码我发现了两个使 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 秒。

于 2012-08-27T17:03:05.857 回答