2013-03-14 65 views
1

我能夠成功地點擊特定區域在地圖上用Sikuli的幫助,但我的要求是通過Sikuli Webdriver有什麼方法可以在Sikuli上繪製地圖?

這裏在地圖上繪製的是什麼,我希望能夠用畫一個例子Sikuli:

How to draw on map view

+0

不知道問什麼。你能否提供更多的細節? – spearson 2013-03-14 20:54:00

+0

我在房地產領域,我需要繪製地圖,我們已經定製了地圖-v3,因此用戶可以根據位置進行搜索: 我想在地圖上繪圖 - 同時使用sikuli和removewebdriver-不是能夠繪製。 – 2013-03-15 03:52:10

+0

有兩種可能的解釋「與Sikuli一起繪製地圖」。你可能想要使用Sikuli在地圖上的屏幕上繪製。這對於演示或調試將用戶的注意力吸引到某些方面很有用。或者你也可以使用Sikuli來使用鍵盤和鼠標與某些地圖程序進行交互,以便地圖程序繪製某些東西。 – 2013-03-15 17:44:17

回答

2

你已經得到了Sikuli webdriver的和正在研究的這些例子。你想使用webdriver在地圖webapp中繪製。這不被支持,但它是可能的(與一些黑客)。這裏是你需要的作品的指針。

Sikuli webdriver的代碼是on Bitbucket。您需要分支代碼並修改DefaultImageElement。現在,它只知道如何click()doubleClick(),但它確實有元素的座標,這就是你需要的。

接下來,看看Selenium的Advanced User Interaction頁面。有一段「生成動作鏈」就是你想要的。該文檔僅顯示了在Web元素上作用的東西,但類別中還有其他方法可盲目操作鼠標。

把這個在一起,讓我們說,我們要在登錄山公園並拖動點擊在Trac的倉庫。這是骨架代碼;你將不得不做大量的實現工作來讓任何東西運行。

使用新的方法,你寫

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(); 
    } 
    //... 
相關問題