如何在量角器页面对象模型中重用函数内部的元素?
How to reuse an element inside of a function in protractor page object model?
我在 windows 10 OS 中将量角器与 Jasmine 一起使用。这是我的堆栈流登录页面。我可以知道如何在 clearme 中访问 txt_username:function()。
pgstackover.js
//pgstackover.js
'use strict';
module.exports = {
txt_username: element(by.id('email')),
txt_password: element(by.id('password')),
btn_submit: element(by.id('submit-button')),
clearme: function() {
txt_username.isDisplayed();
txt_username.clear();
txt_password.clear()
} ,
go: function() {
browser.driver.ignoreSynchronization = true;
browser.waitForAngularEnabled(false);
browser.driver.manage().window().maximize();
browser.driver.get('https://whosebug.com/users/login'); //overrides baseURL
}
这是我的 spec.js 文件,它一直有效直到 clear me function 失败并出现错误 Failed: txt_username is not defined
var toDoPage = require('../../../../pages/pgstackover.js');
describe('My first non angular class', function() {
it('should navigate to stack overflow login page', function() {
toDoPage.go();
});
it ('My function', function() {
// browser.driver.get('https://whosebug.com/users/login');
toDoPage.txt_username.sendKeys('6');
toDoPage.txt_password.sendKeys('winchester');
var value=toDoPage.btn_submit.getText();
expect(value).toEqual("Log in");
});
it('clear me', function() {
toDoPage.clearme();
});
})
长话短说,您的代码不知道什么是 txt_username
,所以您需要指出来。您的 clearme
函数中缺少 .this
。
我已经很久没有使用 promise 管理器(因为它已经过时了)所以这里是一个使用 async/await:
的工作示例
async clearme() {
await this.txt_username.isDisplayed();
await this.txt_username.clear();
await this.txt_password.clear();
}
我在 windows 10 OS 中将量角器与 Jasmine 一起使用。这是我的堆栈流登录页面。我可以知道如何在 clearme 中访问 txt_username:function()。
pgstackover.js
//pgstackover.js
'use strict';
module.exports = {
txt_username: element(by.id('email')),
txt_password: element(by.id('password')),
btn_submit: element(by.id('submit-button')),
clearme: function() {
txt_username.isDisplayed();
txt_username.clear();
txt_password.clear()
} ,
go: function() {
browser.driver.ignoreSynchronization = true;
browser.waitForAngularEnabled(false);
browser.driver.manage().window().maximize();
browser.driver.get('https://whosebug.com/users/login'); //overrides baseURL
}
这是我的 spec.js 文件,它一直有效直到 clear me function 失败并出现错误 Failed: txt_username is not defined
var toDoPage = require('../../../../pages/pgstackover.js');
describe('My first non angular class', function() {
it('should navigate to stack overflow login page', function() {
toDoPage.go();
});
it ('My function', function() {
// browser.driver.get('https://whosebug.com/users/login');
toDoPage.txt_username.sendKeys('6');
toDoPage.txt_password.sendKeys('winchester');
var value=toDoPage.btn_submit.getText();
expect(value).toEqual("Log in");
});
it('clear me', function() {
toDoPage.clearme();
});
})
长话短说,您的代码不知道什么是 txt_username
,所以您需要指出来。您的 clearme
函数中缺少 .this
。
我已经很久没有使用 promise 管理器(因为它已经过时了)所以这里是一个使用 async/await:
的工作示例 async clearme() {
await this.txt_username.isDisplayed();
await this.txt_username.clear();
await this.txt_password.clear();
}