1

在 Sikuli 的帮助下,我成功地点击了地图上的特定区域,但我的要求是通过Sikuli Webdriver在地图上绘制

这是我希望能够使用 Sikuli 绘制的示例:

如何在地图视图上绘图

4

1 回答 1

2

您已经获得了 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();
    }
    //...
于 2013-03-20T01:28:57.243 回答