gpt4 book ai didi

javascript - 在 Nightwatch 页面对象中使用 windowHandles

转载 作者:行者123 更新时间:2023-12-02 23:33:56 25 4
gpt4 key购买 nike

我正在使用 Nightwatch JS 页面对象来创建我的测试。单击打开新选项卡的链接时,我无法将焦点切换到新选项卡。

任何其他搜索都没有在页面对象中使用 windowHandles。

var verifyHomepage = {
verifyPrivacy: function () {
return this.waitForElementVisible('body', 20000)
.click('@privacyLink')
.windowHandles(function (result) {
var handle = result.value[1];
this.switchWindow(handle);
})
.waitForElementVisible('body', 20000)
.assert.urlContains('/regression/en-us/PrivacyStatement')
.assert.containsText('@privacyHeader', 'Privacy Statement');
}
};


module.exports = {
commands: [verifyHomepage],
url: function () {
return this.api.launchUrl;
},

elements: {
// Fill in the empty quotes with your selectors
header: '#customBlock > div > h1',
login: '#loginBtn',
homeLogo: '#siteLogo',
footerLogo: '#siteLogoFooter',
homeLink: '#footerBtnHome > a',
privacyLink: '#footerPrivacyStatment > a',
privacyHeader: '#mainBlock > div > h1'
}
};

this.waitForElementVisible(...).click(...).windowHandles 不是函数

最佳答案

据我所知,您遇到的问题是 .windowHandles 命令需要 this.api 而不仅仅是 this,并且由于它是在 .waitForElementVisible 回调函数中调用的,因此它继承了 this。因此,您可以尝试的一件事是将 .windowHandles 命令放入 .click 回调函数中,如下所示:

var verifyHomepage = {
verifyPrivacy: function () {
return this.waitForElementVisible('body', 20000)
.click('@privacyLink', function () {
this.api.windowHandles(function (result) {
var handle = result.value[1];
this.switchWindow(handle, function () {
this.waitForElementVisible('body', 20000)
.assert.urlContains('/regression/en-us/PrivacyStatement')
.assert.containsText('@privacyHeader', 'Privacy Statement');
});
})
})
}
};

我还建议将针对新页面运行的命令移至 .switchWindow 回调中,如我所示,因为您可能会遇到问题,否则它们会尝试引用原始窗口句柄。

关于javascript - 在 Nightwatch 页面对象中使用 windowHandles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com