使用 Nightwatch 使用 GeckoDriver 将焦点切换到 iframe

时间:2021-04-23 13:47:18

标签: javascript asynchronous nightwatch.js

我的 nightwatchjs 测试出现问题,当通过 Geckodriver 测试(在 Browserstack 上)时,它没有切换到 iframe。

在之前的帖子 here

中似乎有解决此问题的方法

所以似乎我需要将以下代码添加到我的测试脚本中,以便让 geckodriver 测试将焦点切换到包含我需要按下的按钮的 iframe;

await browser.waitForElementVisible(".iframe")
const frame = await browser.element("css selector", ".iframe")
await browser.frame(frame.value)

我目前的脚本目前是这样编码的;

exports.command = function() {
    this.pause(5000);
    this.elements('css selector', '[id*=sp_message_container]', function (cmpPresent) {
        if (cmpPresent.value.length === 0) {
            console.log('no cmp');
        } else {
            this.element('css selector', 'iframe[id*="sp_message_iframe"]', function (result) {
                var mainFrame = result.value;
                this.frame(mainFrame, function () {
                    this.waitForElementPresent('.message-container', 10000, false);
                    this.click('button[aria-label="Accept All"]');
                    this.pause(5000);
                    this.frameParent();
                });
            });
        }
    });
    return this;
};

但是,我对 async、await 等编码的了解非常有限,所以我真的不确定如何将解决方案代码合并到我当前的脚本中。

我以为我可以更换

this.waitForElementPresent('.message-container', 10000, false);

带有await.waitForElementPresent('.message-container', 10000, false);

但这不起作用(我认为这太容易了,不可能是真的)。​​

在尝试将附加异步代码添加到我当前(非异步)脚本中的任何帮助方面,我们将不胜感激。

谢谢

0 个答案:

没有答案
相关问题