首页 > 解决方案 > 使用量角器和黄瓜的定位器无效

问题描述

我正在尝试使用量角器执行代码,但我遇到了这个问题:

[12:48:45] I/direct - 直接使用 ChromeDriver... .. (node:34588) UnhandledPromiseRejectionWarning: TypeError: Invalid locator at Object.check [as checkedLocator] (C:\Users\karro\AppData\Roaming\ npm\node_modules\protractor\node_modules\selenium-webdriver\lib\by.js:275:9) 在 Driver.findElements (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\ lib\webdriver.js:1041:18) 在 C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:159:44Error at ElementArrayFinder.applyAction_ (C:\Users\karro\AppData \Roaming\npm\node_modules\protractor\built\element.js:459:27) 在 ElementArrayFinder。[作为 sendKeys] (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:91:29) 在 ElementFinder。[作为 sendKeys] (C: \Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:831:22)在世界。(C:\Users\karro\WebstormProjects\ProtractorTest\test\banking.ts:17:36) (node:34588) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:34588)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。(node:34588) UnhandledPromiseRejectionWarning: TypeError: Invalid locator at Object.check [as checkedLocator] (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\by.js:275 :9) 在 Driver.findElements (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:1041:18) 在 C:\Users\karro\AppData \Roaming\npm\node_modules\protractor\built\element.js:159:44Error at ElementArrayFinder.applyAction_ (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:459:27)在 ElementArrayFinder。[作为 sendKeys] (C: \Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:91:29)在 ElementFinder。[作为 sendKeys] (C:\Users\karro\AppData\Roaming\npm\node_modules\protractor\built\element.js:831:22) 在 World。(C:\Users\karro\WebstormProjects\ProtractorTest\test\banking.ts:18:37) (node:34588) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 \Users\karro\WebstormProjects\ProtractorTest\test\banking.ts:18:37) (node:34588) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 \Users\karro\WebstormProjects\ProtractorTest\test\banking.ts:18:37) (node:34588) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝编号:2)

1 个场景(1 个通过)

我已经安装了下一个:

npm install -g protractor npm install --save-dev protractor cucumber protractor-cucumber-framework chai chai-as-promised npm install cucumber-html-reporter --save-dev npm install mocha -g npm install mocha --save-dev

这是我的代码:

Login.feature:功能:示例场景:登录成功当我尝试使用有效凭据登录时

银行.ts:

let {defineSupportCode} = require('cucumber');
let chai = require('chai').use(require('chai-as-promised'));
let expect = chai.expect;
var { browser, by, element }= require ('protractor');
var {Given} = require('cucumber');
var {When} = require('cucumber');
var {Then} = require('cucumber');
var {setDefaultTimeout} = require('cucumber');
setDefaultTimeout(60 * 1000);

    When('I try to login with valid credentials', function() {
        browser.get('http://juliemr.github.io/protractor-demo/');
        element(by.name=('first')).sendKeys('1234');
        element(by.name=('second')).sendKeys('2356');
    });

conf.js:

'use strict';exports.config = {directConnect: true,//Running chrome
    Capabilities: { browserName: 'chrome'
    },
    specs: ['../features/*.feature'],//set framework options
    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'), //just maximizing window before testing
    onPrepare: function(){
        browser.waitForAngularEnabled(false);
        browser.driver.manage().window().maximize();

    } ,//Create html report
   "types": ["chai", "cucumber", "node"],
    "typeRoots": [ "../node_modules/@types"],
    onComplete: () => {
        var reporter = require('cucumber-html-reporter');
        var options = {
            theme: 'bootstrap',
            jsonFile: './results.json',
            //output: './results.html',
            reportSuiteAsScenarios: true,
            launchReport: true,
            metadata: {
                "App Version":"0.3.2",
                "Test Environment": "STAGING",
                "Browser": "Chrome  54.0.2840.98",
                "Platform": "Windows 10",
                "Parallel": "Scenarios",
                "Executed": "Remote"
            },
            output: './report/cucumber_report.html',
        };
        reporter.generate(options);
    },//set cucumber options

    cucumberOpts: {
        require: ['../test/banking.ts'],
        strict: true,
       // format: [],    //don't put 'Pretty' as it is depreciated
        'dry-run': false,
        compiler: [],
        format: 'json:results.json',    //make sure you are not using multi-capabilities
    },
    SELENIUM_PROMISE_MANAGER: false,
};

我还添加了关于我的项目已完成的屏幕截图。

有人可以帮我吗?先感谢您。在此处输入图像描述

标签: javascriptnode.jsprotractorcucumbercucumberjs

解决方案


推荐阅读