使用Selenium WebDriver加速鼠标

时间:2012-05-08 15:06:58

标签: selenium webdriver

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

1 个答案:

答案 0 :(得分:2)

奇怪的是,看看源代码,我发现了两个使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像素步长,间隔10ms。我的测试用例中的一步是花费大约1.2秒来进行简单的点击()

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