2015-08-19 35 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中失败 –

相关问题