确定框架是否作为Nightwatch中的条件存在

时间:2016-06-30 09:26:45

标签: javascript frame nightwatch.js

我需要检查是否存在弹出窗口(在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);

1 个答案:

答案 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对象的原因。