首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >量角器和appium -无法读取未定义的属性

量角器和appium -无法读取未定义的属性
EN

Stack Overflow用户
提问于 2016-01-23 14:06:45
回答 1查看 1K关注 0票数 4

我正试着在android设备上吃一些硒测试。所有连接接缝工作,因为在设备上,我可以看到铬打开,然后网址更改为数据;

但是当url改变之后,一切都停止了

启动程序错误:(C:\src\angular-test\node_modules\wd-bridge\lib\wd-bridge.js:6:13):TypeError:无法读取未定义的module.exports module.exports的属性'Q‘

我认为这与wdBridge有关,好像我检查wdBridge,js,q如下所示:

代码语言:javascript
复制
var Q = wd.Q;

我不知道为什么不起作用。

我的protractor配置文件如下:

代码语言:javascript
复制
"use strict";

exports.config = {
    specs: ['e2e/*.js'],
    framework: 'jasmine',
    capabilities: {
        'appium-version': '',
        'platformName': 'Android',
        'platformVersion': '6.0',
        'deviceName': 'Android Device',
        'autoWebView': true,
        'app': "C:/src/angular-test/platforms/android/build/outputs/apk/android-debug.apk",
        'udid': '',
        'fullReset': true,
        'browserName': 'chrome'
    },
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000,
        print: function () {
        }
    },
    onPrepare: function () {

        var DisplayProcessor = require('../node_modules/jasmine-spec-reporter/src/display-processor');
        var SpecReporter = require('jasmine-spec-reporter');

        function TimeProcessor(options) {
        }

        function getTime() {
            var now = new Date();
            return now.getHours() + ':' +
                now.getMinutes() + ':' +
                now.getSeconds()
        }

        TimeProcessor.prototype = new DisplayProcessor();
        TimeProcessor.prototype.displaySuite = function (suite, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displaySuccessfulSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displayFailedSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displayPendingSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };

        // add jasmine spec reporter
        var reporter = new SpecReporter({
            customProcessors: [TimeProcessor]
        });

        jasmine.getEnv().addReporter(reporter);

        var wd = require('wd'),
            wdBridge = require('wd-bridge')(wd);
        wdBridge.initFromProtractor(exports.config);

    },
    //seleniumAddress: 'http://localhost:4723/wd/hub' //For mobile devices
    seleniumAddress: 'http://localhost:4444/wd/hub' //For desktop
};

任何帮助,一如既往,都是非常感谢的。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 19:35:24

我自己解决了这个问题。我所做的是:

从上面提到的代码开始,Q是未定义的。这是因为可以在节点模块文件夹中的bridge.js ge.js文件中找到的var Q = wd.Q位于需要2个参数的函数中。

我更改了我的protractor.config.js文件如下:

代码语言:javascript
复制
"use strict";

var wd = require('wd');
var protractor = require ('protractor');
var wdBridge = require('wd-bridge')(protractor,wd);

exports.config = {
    specs: ['e2e/*.js'],
    framework: 'jasmine',
    capabilities: {
        'appium-version': '',
        'platformName': 'Android',
        'platformVersion': '6.0',
        'deviceName': 'Android Device',
        'autoWebView': true,
        'app': "C:/src/angular-test/platforms/android/build/outputs/apk/android-debug.apk",
        'udid': '',
        'fullReset': true,
        'browserName': 'chrome'
    },
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000,
        print: function () {
        }
    },
    onPrepare: function () {

        var DisplayProcessor = require('../node_modules/jasmine-spec-reporter/src/display-processor');
        var SpecReporter = require('jasmine-spec-reporter');

        function TimeProcessor(options) {
        }

        function getTime() {
            var now = new Date();
            return now.getHours() + ':' +
                now.getMinutes() + ':' +
                now.getSeconds()
        }

        TimeProcessor.prototype = new DisplayProcessor();
        TimeProcessor.prototype.displaySuite = function (suite, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displaySuccessfulSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displayFailedSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };
        TimeProcessor.prototype.displayPendingSpec = function (spec, log) {
            return getTime() + ' - ' + log;
        };

        // add jasmine spec reporter
        var reporter = new SpecReporter({
            customProcessors: [TimeProcessor]
        });

        jasmine.getEnv().addReporter(reporter);

        wdBridge.initFromProtractor(exports.config);

    },
    //seleniumAddress: 'http://localhost:4723/wd/hub' //For mobile devices
    seleniumAddress: 'http://localhost:4444/wd/hub' //For desktop
};

它现在运行得很好。

注意:如果没有找到wd**,** wdBridge protractor 模块,则需要在全局范围内安装它们(例如, npm install wd 而不是 npm install -g wd**)** )

希望这能帮到你。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34964445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档