使用Window_handles在位置弹出窗口中单击按钮,并带有守夜功能

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

本文关键字:按钮 单击 功能 守夜 窗口 handles Window 位置 使用      更新时间:2024-03-10

我在nightwatch中测试了一个函数,该函数要求您共享位置以显示一些结果。每次我与该按钮交互时,浏览器的地理位置默认弹出窗口都会出现,我需要与它交互(接受或取消它)才能继续测试。

为了做到这一点,我尝试了Nightwatchapi文档中提到的acceptAlert,但没有成功。我在几个地方读到,在这种情况下,你可以使用命令切换到新窗口,比如这里:

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/dissubAlert弹出窗口。

所以,最后,我从github得到了这个答案,它说你不能这样做,但你可以将浏览器设置为不再请求批准。不是很令人满意,但是。。。好了,一个变通办法。