大家好!
由于我的英语语法不够好,所以请多多包涵。Selenium是一个用于在不同浏览器中测试Web应用程序的框架。我想向正在使用Selenium的人寻求帮助。我在Selenium的Google Group中询问过其他用户,但没有人回答我。
我正在使用Selenium Webdriver进行大量鼠标交互的项目中编写C#测试。当我们的团队开始使用Selenium Webdriver时,我们发现鼠标操作(OpenQA.Selenium.Interactions.Actions)在IE中具有一些意外的行为,并且在不同的浏览器上(甚至在不同的机器上)表现也不同。起初,我是唯一使用鼠标操作的测试者。我一直责怪Selenium Webdriver,并试图找到避免这种不准确性的方法。我花了很长时间研究这个问题,但没有任何结果。但我不想浪费您的时间讲述这段前史。
好的,让我来描述一下情况。我们创建了演示项目:简单的页面和canvas。我们实现了通过按住左键在画布上绘制的功能。所以我希望这对您来说非常清楚。
接下来重要的事情是,我们启用了控制台日志记录。也就是说,我们可以通过打开控制台看到鼠标箭头在画布内的坐标。
然后我们编写了一个测试:
Actions a = new Actions(driver);
a.Build();
a.MoveToElement(canvas, 100, 100)
.ClickAndHold()
.MoveByOffset(100, 0)
.Release();
a.Perform();
代码非常简单。只需将鼠标箭头移动到画布上,然后偏移鼠标箭头(100, 100),再保持左键鼠标按下状态向上垂直移动 100 像素。正如您所理解的那样,日志中的结果应该是 (200,100)。
但最有趣的事情在于:我的同事得到了相同的结果(200, 100)!但是他们一个月前有过不准确的结果(这就是为什么我们认为鼠标操作不准确的原因)。而我仍然得到不准确的结果:(192,96)。所以每 100 像素的偏移产生了 4 像素的误差。我的同事不明白他们改变了什么,以及为什么鼠标操作现在对他们起作用了。
还有一件有趣的事情是,从视觉上看(我提醒您,我们可以在画布上进行绘制),它绝对是 100 像素(我们在垂直移动鼠标箭头时按住了鼠标按钮)!太神奇了!
因此,这就是实验。我请求任何相关人士帮助我解决这个问题。它只出现在 IE9 中。我想了解这种行为的原因。Actions 类是如何实现的?它可能取决于鼠标驱动程序之类的东西吗?如果是这样,如果有关系的话,我使用的是无线鼠标,它有一个特殊的驱动程序。请帮忙!
附言:我试图更改我的鼠标设置、屏幕设置,但没有任何结果。
谢谢!
最好的问候, Michael Kalygin。