使用 Window_handles 在位置弹出窗口中单击按钮,使用 nightwatch

Use Window_handles to click button in location pop-up, with nightwatch

我在 nightwatch 中测试了一项功能,该功能需要您共享您的位置才能显示一些结果。每次我与该按钮交互时,浏览器的 geoiplocation 默认弹出窗口都会出现,我需要与其交互(接受或关闭它)才能继续测试。

为了做到这一点,我已经尝试 acceptAlert 在 Nightwatch api 文档中提到的,但没有成功。我在几个地方读到,在这种情况下,您可以使用命令切换到新的 window,例如 here :

browser.window_handles(function(result) {
    var handle = result.value[0];
    browser.switchWindow(handle);
});

我的问题是,当我无法查看该弹出窗口的来源以获取它的 html 时,如何单击该按钮?或者有其他方法可以消除它吗?

你可以试试这个语法。 它可能有效:

browser.window_handles(function(result) {
    var handle = result.value[0];
    this.switchWindow(handle);
    this.useXpath(); or this.useCss()
    this.click("locator path")
});

试试这个

  browser
           .click('@buttonPopup')
           .acceptAlert();

如果您使用的是页面对象,它将是:

  pageObject.click('@buttonPopup',function(){
              browser.acceptAlert();           
      })

window_handles 方法将处理 'tab' 而不是弹出窗口。

PS:记住这一点,phantomjs 不会使用 acceptAlert/dismissAlert 弹出窗口。

所以,最后,我从 github 那里得到了这个答案,它说你不能这样做,但你可以将你的浏览器设置为不再请求批准。 不是很令人满意,但是......你去吧,一个解决方法。