答案 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();
}
//...