我需要检查是否存在弹出窗口(在iframe中打开),然后我将执行一些代码块(切换到该帧,输入一些数据,单击继续按钮)。 在搜索解决方案时,我发现this question与我的90%相同,只是它验证了特定元素的存在。在我的情况下,我无法检查元素,直到我切换到新框架。
所以我应该找到类似于框架的东西,而不是document.getElementById
。我可以在Nightwatch中使用这样的东西吗?
var popup = browser.getElementById("myFrameId");
if (popup!= null){
//chunck of code
}
我也尝试了this thread中提到的内容,但没有成功,似乎我无法将帧ID传递给任何此函数:
var popup =0;
do {
popup =0;
klarnaForm.waitForElementVisible('iframe #klarna-fullscreen-iframe',5,false,function (result) {
if(result.value) {
changeFrame('pop-up');
changeFrame('klarna');
klarnaForm.continueKlarna();
popup = 1;
}
});
} while (popup);
答案 0 :(得分:0)
获取回调之外的弹出值,是你想要的吗?如果是,试试这个:
var popup =0;
browser.waitForElementVisible('iframe #klarna-fullscreen-iframe',5,false,function (result) {
if(result.value) {
changeFrame('pop-up');
changeFrame('klarna');
klarnaForm.continueKlarna();
popup = 1;
}
})
.perform(function(browser,done){
console.log(popup); // popup will be 1 if the 'if statement' above was true
// do your chuck code here.
});
ps:目前,api .perform
不支持页面对象,这就是我们必须留在browser
对象的原因。