mouseMove不使用Selenium和Protractor

时间:2015-08-19 09:37:22

标签: javascript angularjs selenium protractor karma-jasmine

嗨,在Angular应用程序中,我有一个Openlayers3地图,我有一个代表建筑物的图层。在我的测试中,我试图点击其中一个建筑物,触发一个侧面板,图像链接到这个建筑物。

问题是只有在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中它才会变得富有。有什么想法吗?

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

亲切的问候

1 个答案:

答案 0 :(得分: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');                    
   });
});