javascript - 使用量角器和黄瓜的定位器无效
问题描述
我正在尝试使用量角器执行代码,但我遇到了这个问题:
[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,
};
我还添加了关于我的项目已完成的屏幕截图。
解决方案
推荐阅读
- database - 如何使用键集分页对表数据进行动态排序?
- c++ - 如何启用 libMagick++ 以保存 .png 文件格式
- sql-server - 使用 STRING_SPLIT 将动态参数传递给 IN 参数
- r - 如何从 Web 下载单细胞矩阵文件
- python-3.x - 无法使用 Selenium 在下拉菜单中单击
- ios - iOS 13 全屏 UIImagePickerController?
- c# - UserPrincipal.FindByIdentity 在 64 位 WinPE 下的 C# 中失败
- sql - 通过相同的列标识符创建两个单独的列
- c# - CORBA 的 ASP.Net WebAPI 替代品?
- oracle - 如何在 Oracle 中删除字段末尾的空字节