使用 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);
}
});
});
我是量角器的新手,正在尝试调试 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);
}
});
});