如何使用量角器在画布上的特定位置执行单击事件

时间:2017-03-16 07:29:59

标签: javascript angularjs node.js protractor

我长期坚持这个问题而且我不知道该怎么做。

我正在尝试自动化地图应用程序,该应用程序上有位置和位置。当您单击特定位置时,它将打开有关位置或位置的详细信息。地图有一个画布,HTML代码如下所示:

<canvas width="642" height="741" oncontextmenu="return false;" type="layer" class="tmc" style="user-select: none; left: 0px; top: 0px; position: absolute; width: 642px; height: 741px;"></canvas>

这个画布基本上是一个地图,我想在具有一些数据的特定位置上执行鼠标点击事件。

我的非点击事件看起来像这样

browser.sleep(10000).then(function () {
            var canvas = element(by.xpath("xpath"));

            canvas.click();

        });

但有些我无法达到预期效果。请帮忙

另请在UI的屏幕截图下方找到附件。 enter image description here

1 个答案:

答案 0 :(得分:1)

我可以理解尝试自动化基于canvas的应用程序的痛苦,并且HTML中没有任何内容,并且完整的Map直接从浏览器中的canvas元素呈现。甚至谷歌地图也表现相同。 HTML中只有canvas元素,与页面交互的唯一方法是使用Protractor的actions API

你可以尝试这样的事情。这对我来说对gMaps很有用。

describe('Describe something', function() {
    it('check check', function () {
        browser.driver.get('https://www.google.co.in/maps/place/Hyderabad,+Telangana/data=!4m2!3m1!1s0x3bcb99daeaebd2c7:0xae93b78392bafbc2?sa=X&ved=0ahUKEwiMosHAy9rSAhVCt48KHYP5DBMQ8gEIgQEwDQ')
        browser.driver.actions().
        // Move mouse to a particular position
        mouseMove({x: 636, y: 292}).
        // Click or hoverOver on the location
        doubleClick().
        perform();
    });
});