有没有办法在Sikuli的地图上画画?

时间:2013-03-14 11:23:07

标签: selenium-webdriver sikuli

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

在地图上绘图

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

How to draw on map view

1 个答案:

答案 0 :(得分:2)

你已经拥有了Sikuli webdriver并且正在查看示例。您想使用webdriver在地图webapp中绘制。这是不受支持的,但它是可能的(有一些黑客攻击)。这里有你需要的部分的指针。

Sikuli webdriver的代码是on Bitbucket。您需要分支代码并修改DefaultImageElement。现在,它只知道如何click()doubleClick(),但它确实有元素的坐标,这就是你需要的。

接下来,查看Advanced User Interaction上的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();
    }
    //...