在 Sikuli 的帮助下,我成功地点击了地图上的特定区域,但我的要求是通过Sikuli Webdriver在地图上绘制
这是我希望能够使用 Sikuli 绘制的示例:
在 Sikuli 的帮助下,我成功地点击了地图上的特定区域,但我的要求是通过Sikuli Webdriver在地图上绘制
这是我希望能够使用 Sikuli 绘制的示例:
您已经获得了 Sikuli 网络驱动程序,并且正在查看相关示例。您想使用 webdriver 在地图 web 应用程序中进行绘制。这不受支持,但有可能(通过一些黑客攻击)。以下是您需要的部分的指针。
Sikuli 网络驱动程序的代码位于 Bitbucket 上。您将需要分支代码并修改DefaultImageElement
. 现在,它只知道如何click()
和doubleClick()
,但它确实有元素的坐标,这正是你所需要的。
接下来,看看 Selenium 的高级用户交互页面。有一个“生成动作链”部分就是你想要的。文档只显示了作用于 web 元素的东西,但类中还有其他方法Actions
可以盲目操作鼠标。
综上所述,假设我们要单击Sign Hill Park并拖动到On Trac Warehouse。这是骨架代码;你必须做一堆实现工作才能让任何东西运行起来。
使用您编写的新方法
ImageElement park = driver.findImageElement(SIGN_HILL_PARK_IMG);
ImageElement warehouse = driver.findImageElement(WAREHOUSE_IMG);
park.dragTo(warehouse)
实现思路dragTo
:
public class DefaultImageElement {
//...
public void dragTo(DefaultImageElement dest) {
Actions builder = new Actions(driver);
Action dragAction = builder.moveToElement(containerWebElement, x, y) //containerWebElement is the element that holds the map, x and y are the location of our target within the map
.clickAndHold()
.moveToElement(dest.containerWebElement, dest.x, dest.y)
.release()
.build();
dragAction.perform();
}
//...