Protractor &引用;点击";在不可见的元素上

Protractor &引用;点击";在不可见的元素上,protractor,Protractor,所以我目前的情况是,我试图点击网页上谷歌地图窗口中的一个标记。我以两种方式成功地定位了标记:element.all(by.css('.angular google map marker'))和element.all(by.repeater('m in map.markers')) 我已经证明,通过更改Google地图上的位置,并使用count()检索存在的标记数,可以获得正确的元素,在任何情况下都会返回正确的数字 但是,当我尝试执行例如element.all(by.css('.angular g

所以我目前的情况是,我试图点击网页上谷歌地图窗口中的一个标记。我以两种方式成功地定位了标记:
element.all(by.css('.angular google map marker'))
element.all(by.repeater('m in map.markers'))

我已经证明,通过更改Google地图上的位置,并使用
count()
检索存在的标记数,可以获得正确的元素,在任何情况下都会返回正确的数字

但是,当我尝试执行例如
element.all(by.css('.angular google map marker')).first().click()
时,我收到以下错误:

失败:元素不可见

HTML部分

<div ng-transclude="" style="display: none"> 

  <span class="angular-google-map-marker" ng-transclude="" ng-repeat="m in map.markers" options="m.options" coords="m.coords" idkey="m.id" click="onMarkerClick"></span>

  <span class="angular-google-maps-window" ng-transclude="" coords="activeMarker.coords" options="windowMapOptions" show="windowMapOptions.show" closeclick="closeInfoWindow" templateurl="'gMapInfoWindow.html'" templateparameter="activeMarker"></span>

</div>

通常,由于单击而触发某些事件的元素具有类似于
ng click=foo()
的属性,但是上面的标记仅使用
click=foo()
。此外,如果查看带有div标记的行,它会显示
display:none
,这可能解释了可见性错误


我的问题:有没有一种方法可以在不直接单击元素的情况下激活属性(如
click=foo()
)的效果?

首先,确保可以在元素可见时与之交互,您可以在浏览器的开发工具中执行此操作,通过添加
显示:块
使其可见。然后检查如果更改selectbox的值,该值也可以用于角度绑定

如果是这样,您可以通过使用以下命令在页面中注入一段Javascript,轻松地使用量角器使元素可见:

browser.executeScript('document.querySelector("div").style.display = "block"');

这导致了一个承诺,所以要意识到这一点

首先,确保可以在元素可见时与元素交互,可以在浏览器的DevTools中执行此操作,通过添加
显示:块
使其可见。然后检查如果更改selectbox的值,该值也可以用于角度绑定

如果是这样,您可以通过使用以下命令在页面中注入一段Javascript,轻松地使用量角器使元素可见:

browser.executeScript('document.querySelector("div").style.display = "block"');

这导致了一个承诺,所以要意识到这一点

除了尝试使元素可见然后单击之外,您还可以尝试单击“通过JavaScript”(尽管存在一些差异-):


除了尝试使元素可见然后单击之外,您还可以尝试“通过JavaScript”单击(尽管存在一些差异-):