如何点击嵌入JavaScript的Google地图中的图钉?

时间:2017-04-07 14:00:25

标签: javascript google-maps

网页中嵌入了地图。我想点击地图中的图钉。我可以将JS注入页面,或者使用Selenium可用的任何API。

问题是我无法在页面上的嵌入式地图中找到该引脚。

可能的解决方案:
我已经考虑过要领先它并转移点击监听器的注册,但是如果有人之前做过这件事并且可以给我一个提示,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是一个使用Nightwatch.js的测试用例,我需要点击地图中的一个图钉(位置)。由于我可以控制测试用例并且只有一个位置,我可以假设视图以引脚为中心。所以:

browser.execute(function() {
function clickPin(){
 var elem = document.getElementsByClassName('map-canvas')[0];
 var rect = elem.getBoundingClientRect();
 var centerY = (rect.bottom - rect.top);
 var centerX = (rect.right - rect.left);
 var divX = document.createElement("div");
 divX.style.visibility = 'hidden';
 divX.id = 'offsetX';
 divX.innerHTML = centerX.toString();
 var divY = document.createElement("div");
 divY.style.visibility = 'hidden';
 divY.innerHTML = centerY.toString();
 divY.id = 'offsetY';
 document.head.appendChild(divX);
 document.head.appendChild(divY);
}
clickPin();
}, [], function(result){});
browser.pause(3000);
browser.waitForElementPresent(`//*[@id="offsetX"]`, 3000);
var relX = browser.getValue(`//*[@id="offsetX"]`);
var relY = browser.getValue(`//*[@id="offsetY"]`);
//set cursor position to center and click (fragile)
browser.moveToElement(`//*[@class="map-canvas"]`, relX, relY).mouseButtonClick();