使用 Typescript 和 VS Code 调试量角器时浏览器不同步

Browser is not in sync while debugging the protractor with Type Script and VS Code

我是量角器的新手,正在尝试调试 VS Code 中的代码。浏览器按预期启动,与调试不同步。单击继续后,整个场景将在浏览器上执行。

下面是我的配置文件。

"configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Launch",
        "program": "${workspaceFolder}/node_modules/protractor/bin/protractor",
        "stopOnEntry": false,
        "args": ["${workspaceRoot}/built/conf.js"]
    }
]

正在尝试调试的代码:

/**
  * Enter userName
  */
 public enterUserName(): Promise<void> {
        try{
            return <Promise<void>> element(by.name(this.userNameLocater)).sendKeys("admin@XXX.com");
        }catch(err){
            console.log("Error while entering the user name " + err);
        }  
    }
    /**
     * Enter password
     */
    public enterPassword(): Promise<void> {
        try{
            return <Promise<void>> element(by.name(this.passwordLocater)).sendKeys("PWD");
        }catch(err){
            console.log("Error while entering the password " + err);
        }  
    }

    /**
     * click on signin button
     */
    public clickSignin(): Promise<void> {
        try{
            return <Promise<void>> element(by.tagName(this.signinbttonLocater)).click();
        }catch(err){
            console.log("Error while clicking on signin button" + err);
        }  
    }

    /**
     * Login success fully 
     */
    public login(): Promise<void> {
        try{
            this.enterUserName();
            this.enterPassword();
            return this.clickSignin();
        }catch(err){
            console.log("Error while signing in" + err);
        }

    }

下面是只有一个场景的Spec.ts。

import { browser, element, by } from 'protractor';
import 'jasmine';
import {LoginCls} from '../Pages/loginCls';

let login = new LoginCls('loginEmail','loginPassword','button');

describe("Login to application", function () {
    it("Should login Successful", function () {
        browser.get("");
        login.login().then(() => {
            var text = element(by.xpath('/html/body/app-root/div[1]/div/div/div[2]/home-comp/div/div[1]/div[1]/div[2]/p[1]'));
            expect(text.getText()).toContain('Welcome,  Administrator Super Admin!');
        }).catch((err) => {
            console.log(err);
        });
    });
});

您应该尝试使用 async/await 模式来处理 promise。见下文:

import { browser, element, by } from 'protractor';
import 'jasmine';
import {LoginCls} from '../Pages/loginCls';

let login = new LoginCls('loginEmail','loginPassword','button');

describe("Login to application", () => {
    it("Should login Successful", async () => {
        await browser.get("");
        try {
            var text = element(by.xpath('/html/body/app-root/div[1]/div/div/div[2]/home-comp/div/div[1]/div[1]/div[2]/p[1]'));
            expect(await text.getText()).toContain('Welcome,  Administrator Super Admin!');
        } catch (err) {
            console.log(err);
        }
    });
});