Protractor 量角器框架:回调问题,同步回调在步骤定义文件中不起作用

Protractor 量角器框架:回调问题,同步回调在步骤定义文件中不起作用,protractor,cucumber,chai,pageobjects,Protractor,Cucumber,Chai,Pageobjects,我试图从头开始实现量角器Cumber框架。我的文件也在工作。现在,作为下一步,我将尝试为同一个脚本实现POM,但首先我需要使我的脚本在没有异步回调的情况下工作。我不希望用异步回调实现POM。请有人告诉我正确的方向,或者告诉我当前代码哪里出了问题 我正在测试的应用程序只是角度,因此错误消息没有帮助 第一步文件与回调正常工作,如果我删除回调,它将停止工作,错误如下所示 功能文件 示例数据为虚拟数据 Scenario Outline: Scenario Outline name: Login

我试图从头开始实现量角器Cumber框架。我的文件也在工作。现在,作为下一步,我将尝试为同一个脚本实现POM,但首先我需要使我的脚本在没有异步回调的情况下工作。我不希望用异步回调实现POM。请有人告诉我正确的方向,或者告诉我当前代码哪里出了问题

我正在测试的应用程序只是角度,因此错误消息没有帮助

第一步文件与回调正常工作,如果我删除回调,它将停止工作,错误如下所示

功能文件 示例数据为虚拟数据


    Scenario Outline: Scenario Outline name: Login and Verify user
        Given User is redirected to <site>
        When User inputs <username> and <password>
        Then User should be successfully logged in with their <name>

        Examples:
            | site              | username | password       | name     |
            | http://dummydata/ | xyz      | password12     | dummy    |
Conf.js

exports.config = {
  directConnect: true,
  getPageTimeout: 50000,
    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    capabilities:{'browserName': 'chrome'},  
  specs: ['tests/feature/*.feature'],
  
  cucumberOpts:{
    require:'tests/stepdefinition/stepdefinition.js',
    tags: false,
    profile: false,
    'no-source':true},
    onPrepare: function(){
    const {Given, Then, When} = require('cucumber');
    global.Given = Given;
    global.When = When;
    global.Then = Then;
      browser.manage().window().maximize();
    }

}
失败的步骤文件

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
const { browser, element } = require("protractor");
chai.use(chaiAsPromised);
var expect = chai.expect;
var { setDefaultTimeout } = require('cucumber');
setDefaultTimeout(60 * 1000);

/*these are page element locators- needs to be shifted to another file 
and reference needs to created here*/

var username = element(by.xpath('/html/body/app-root/app-auth-main/div/div[2]/app-login/div/div/form/div[1]/input'));
var password = element(by.xpath('/html/body/app-root/app-auth-main/div/div[2]/app-login/div/div/form/div[2]/input'));
var loginButton = element(by.xpath('/html/body/app-root/app-auth-main/div/div[2]/app-login/div/div/form/div[3]/button[2]'));
var userVerify = element(by.xpath('/html/body/app-root/app-main/app-header/div/div[2]/div/table/tbody/tr/td[2]/div[1]'));
var logoutButton = element(by.xpath('/html/body/app-root/app-main/app-header/div/div[2]/div/table/tbody/tr/td[3]/ul/li/div/a[3]'));
var loginHeader = element(by.xpath('/html/body/app-root/app-auth-main/div/div[2]/app-login/div/div/form/p'));
var logoutdropdown = element(by.xpath('/html/body/app-root/app-main/app-header/div/div[2]/div/table/tbody/tr/td[3]/ul/li'));
var teamName = element(by.xpath('/html/body/app-root/app-auth-main/div/div[1]/div/div/div/table/tbody/tr/td[2]/div/div[2]'))
var loginError = element(by.xpath('/html/body/div/div/div[1]/h2'))

function login(a, b) {
  username.sendKeys(a);
  password.sendKeys(b);
  loginButton.click();

}


Given(/^User is redirected to (.*)$/, { timeout: 60 * 1000 }, function (site) {
  browser.get(site);
  expect(loginHeader.isPresent());
});

When(/^User inputs (.*) and (.*)$/, { timeout: 60 * 1000 }, function (username, password, callback) {
  login(username, password);
  browser.sleep(2000);
  browser.getCurrentUrl().then(function (Url) { console.log(Url + " page reached, login successful.") });
  expect(userVerify.isPresent()).and.notify(callback);
});

Then(/^User should be successfully logged in with their (.*)$/, { timeout: 60 * 1000 }, function (name, callback) {

  expect(userVerify.getText()).to.eventually.equal(name);
  logoutdropdown.click();
  logoutButton.click();
  browser.sleep(2000);
  browser.getCurrentUrl().then(function (Url) {
    console.log("login page " + Url + " reached. Test finished")
  });
  expect(teamName.getText()).to.eventually.equal("Asterisk").and.notify(callback);

}); 

错误消息

[11:13:53] I/launcher - Running 1 instances of WebDriver
[11:13:53] I/direct - Using ChromeDriver directly...

DevTools listening on ws://127.0.0.1:52334/devtools/browser/7dccfc7d-60c3-48b7-a6fa-3897bc329b1b
.[11:14:03] E/launcher - Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined.  This could be
either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping.  See http://git.io/v4gXM for details"
[11:14:03] E/launcher - Error: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined.  This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping.  See http://git.io/v4gXM for details"
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\browser.js:461:23
    at ManagedPromise.invokeCallback_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1376:14)
    at TaskQueue.execute_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
    at TaskQueue.executeNext_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2927:27
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
    at processTicksAndRejections (internal/process/task_queues.js:97:5)Error
    at ElementArrayFinder.applyAction_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:459:27)
    at ElementArrayFinder.<computed> [as sendKeys] (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:91:29)
    at ElementFinder.<computed> [as sendKeys] (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:831:22)
    at login (C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:23:12)
    at World.<anonymous> (C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:38:3)
[11:14:03] E/launcher - Process exited with error code 199
PS C:\Users\dummyUser\Desktop\asteriskTestAutomation> [30280:26308:0908/111407.969:ERROR:device_event_log_impl.cc(208)] [11:14:07.970] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.
[11:13:53]I/launcher-运行WebDriver的1个实例
[11:13:53]I/direct-直接使用ChromeDriver。。。
DevTools在ws://127.0.0.1:52334/DevTools/browser/7dccfc7d-60c3-48b7-a6fa-3897bc329b1b上侦听
[11:14:03]E/launcher-等待量角器与页面同步时出错:“angularJS可测试性和角度可测试性都未定义。这可能是
因为这是一个非角度页面,或者因为您的测试涉及客户端导航,这可能会干扰量角器的引导。请参阅http://git.io/v4gXM 详情请参阅“
[11:14:03]E/launcher-错误:等待量角器与页面同步时出错:“angularJS可测试性和角度可测试性都未定义。这可能是因为这是一个非角度页面,或者因为您的测试涉及客户端导航,这可能会干扰量角器的引导。看见http://git.io/v4gXM 详情请参阅“
位于C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\build\browser.js:461:23
在ManagedPromise.invokeCallback(C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\promise.js:1376:14)
在TaskQueue.execute(C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\promise.js:3084:14)
在TaskQueue.executeNext(C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\promise.js:3067:27)
在C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\promise.js:2927:27
在C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\node\u modules\selenium webdriver\lib\promise.js:668:7
在processTicksAndRejections(internal/process/task_queues.js:97:5)错误
在ElementArrayFinder.applyAction上(C:\Users\dummyUser\AppData\Roaming\npm\node\u modules\dragrator\builded\element.js:459:27)
位于ElementArrayFinder。[作为sendKeys](C:\Users\dummyUser\AppData\Roaming\npm\node\U modules\Gragrator\Build\element.js:91:29)
在ElementFinder上。[作为发送键](C:\Users\dummyUser\AppData\Roaming\npm\node\U modules\Gragrator\Build\element.js:831:22)
登录时(C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:23:12)
世界级。(C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:38:3)
[11:14:03]E/launcher-进程退出,错误代码199
PS C:\Users\dummyUser\Desktop\asteriskTestAutomation>[30280:26308:0908/111407.969:错误:设备\u事件\u日志\u impl.cc(208)][11:14:07.970]蓝牙:蓝牙适配器\u winrt.cc:1074获取默认适配器失败。
[11:13:53] I/launcher - Running 1 instances of WebDriver
[11:13:53] I/direct - Using ChromeDriver directly...

DevTools listening on ws://127.0.0.1:52334/devtools/browser/7dccfc7d-60c3-48b7-a6fa-3897bc329b1b
.[11:14:03] E/launcher - Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined.  This could be
either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping.  See http://git.io/v4gXM for details"
[11:14:03] E/launcher - Error: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined.  This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping.  See http://git.io/v4gXM for details"
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\browser.js:461:23
    at ManagedPromise.invokeCallback_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1376:14)
    at TaskQueue.execute_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
    at TaskQueue.executeNext_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2927:27
    at C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
    at processTicksAndRejections (internal/process/task_queues.js:97:5)Error
    at ElementArrayFinder.applyAction_ (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:459:27)
    at ElementArrayFinder.<computed> [as sendKeys] (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:91:29)
    at ElementFinder.<computed> [as sendKeys] (C:\Users\dummyUser\AppData\Roaming\npm\node_modules\protractor\built\element.js:831:22)
    at login (C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:23:12)
    at World.<anonymous> (C:\Users\dummyUser\Desktop\asteriskTestAutomation\tests\stepdefinition\stepdefinition.js:38:3)
[11:14:03] E/launcher - Process exited with error code 199
PS C:\Users\dummyUser\Desktop\asteriskTestAutomation> [30280:26308:0908/111407.969:ERROR:device_event_log_impl.cc(208)] [11:14:07.970] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.