使用 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 那里得到了这个答案,它说你不能这样做,但你可以将你的浏览器设置为不再请求批准。
不是很令人满意,但是......你去吧,一个解决方法。
我在 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 那里得到了这个答案,它说你不能这样做,但你可以将你的浏览器设置为不再请求批准。 不是很令人满意,但是......你去吧,一个解决方法。