代码之家  ›  专栏  ›  技术社区  ›  Nuru Salihu

如何在nightwatch js中运行“window”js命令

  •  3
  • Nuru Salihu  · 技术社区  · 9 年前

    请给我一些根据我的设备不同而不同的测试。在开始测试之前,我必须确定我的设备是移动设备还是桌面设备。

    我想利用睡前功能,并在我的globals.js中添加了以下内容

    var self = module.exports = {
        environment: undefined,
        beforeEach: function (done) {
            self.environment = browser.window.navigator.userAgent;
            console.log("Run against: " + self.environment);
            done();
        },
    
    };
    

    而我的测试

    module.exports = {
        tags: ['assetindex'],
        'visit': function(browser) {
            (/Mobile/.test(browser.globals.environment)) ?
                browser
                    .page.assetindex().mobileVisit()
                    .end()
            :
                browser
                    .page.assetindex().mobileVisit()
                    .end()
        }
    };
    

    然而,我的代码在失败

    self.environment = browser.window.navigator.userAgent;

    saying widnow未定义。考虑到我不是针对浏览器对象运行,这个错误是有意义的。请告诉我如何实现这一点?如何在夜间监视中针对浏览器显示js窗口?非常感谢任何帮助或替代方案

    使现代化

    在阅读了下面的答案后,我更新了我的全球信息。js至

    var self = module.exports = {
        environment: undefined,
    
        beforeEach: function (browser, done) {
            browser.execute(function(data) {
                return window.navigator.userAgent;
            }, [], function(result) {
                console.log('it comes here ', result);
                self.environment = result.value;
            });
    
            console.log("Run against: " + self.environment);
            done();
        },
    
    };
    

    令我惊讶的是,我自己。环境总是未定义的。它似乎没有运行.exec函数。

    1 回复  |  直到 9 年前
        1
  •  5
  •   Gilad Artzi    9 年前

    您可能可以使用 execute 命令:

    browser.execute(function(data) {
        return window.navigator.userAgent;
    }, [], function(result) {
        self.environment = result.value;
    });
    

    更多信息: http://nightwatchjs.org/api/execute.html

    在您的情况下,当使用 beforeEach 你需要移动 done() 在回调函数中,如下所示:

    beforeEach: function (browser, done) {
        browser.execute(function(data) {
            return window.navigator.userAgent;
        }, [], function(result) {
            console.log('it comes here ', result);
            self.environment = result.value;
            console.log("Run against: " + self.environment);
            done();
        });
    },