2015-08-19 34 views
1

喜工作在角應用我有一個Openlayers3地圖上,我有這表示建築物的一層。在我的測試,我想點擊這些建築觸發與鏈接到該建築物的圖像側面板之一。的mouseMove不使用Selenium和量角器

的問題是,只有在Firefox我的測試似乎並沒有工作。我想知道是否有其他人偶然發現了這個問題,如果他們是一個解決方案。

我的猜測是它有事情做與.mouseMove 我的代碼:

//我有有一個方法

this.klikOpGebouw = function(gebouwId) { 
    return browser.executeScript("return angular.element(document.querySelector('#map')).scope().map.custom.getPixelForGebouw(" + gebouwId + ")").then(function(pixel){ 
     return browser.actions() 
      .mouseMove(element(by.id("map")).getWebElement(), {x: pixel[0], y: pixel[1]}) 
      .click() 
      .perform(); 
    }); 
}; 

而且在我的測試我做一個頁面對象:

it('er zijn verschillende afbeeldingen gekoppeld aan het dossier', function() { 
    mainPage.goTo('admin', 'admin'); 
    var dossierDetailPage = mainPage.dossiers().byIndex(0).openDetail(); 
    browser.waitForAngular(); 
    dossierDetailPage.klikOpGebouw(1); 
    var gebouwPanel = dossierDetailPage.getGebouwPanel(); 
    expect(gebouwPanel.countAfbeeldingen()).toBe(3); 
}); 

在Chrome和Internet Explorer這個完美的作品。只有在Firefox中,它纔會變成fubar。有任何想法嗎 ?

Selenium driver : 2.47.1 
AngularJS : 1.3.4 
karma : 0.12.16 
karma-jasmine: 0.2.2 

親切的問候

回答

0

這是我們如何做到這一點。區別在於我們使用的是X/Y座標的數字,而不是對象:

//select a value with mouse 
popup.getLocation().then(function (position) { 
    popup.getSize().then(function (dimension) { 
     browser.actions(). 
     mouseMove(popup, 0, 150). 
     click(). 
     perform(); 
     expect(input.getAttribute('value')).toBe('id_3');      
    }); 
}); 
+0

嘗試過但沒有骰子。我們檢查了點擊的像素是否實際上是建築物的像素,這似乎就是這種情況。我們嘗試使用的OpenLayers方法:forEachFeatureAtPixel(像素,功能(功能,層){})方法,但我們從這個方法爲我們指定的像素越來越爲零的特點。其令人費解的 –

+0

好吧。我從代碼中注意到的另一個區別是您使用getWebElement()。我們只是使用這個:element(by.css('div [some name]'));不知道這是否會幫助...... – Tone

+0

試過太多,但沒有骰子。我認爲這是更基本的東西。因爲它只在Firefox中失敗 –

相關問題