Selenium webdriver 为什么需要查找所有页面对象?
我的应用程序由angularJS和非angularJS页面组成。 因此,我使用量角器对黄瓜进行e2e测试。 我正在尝试使用pageObjects组织测试 文件夹结构如下: 特征Selenium webdriver 为什么需要查找所有页面对象?,selenium-webdriver,cucumber,protractor,Selenium Webdriver,Cucumber,Protractor,我的应用程序由angularJS和非angularJS页面组成。 因此,我使用量角器对黄瓜进行e2e测试。 我正在尝试使用pageObjects组织测试 文件夹结构如下: 特征 |_ step_definitions |- login.steps.js gmail.feature 页面对象 |- createAccount.js |- gmailPage.js progrator.conf.js gmail.feature Feature: Gmail login page
|_ step_definitions
|- login.steps.js
gmail.feature
页面对象
|- createAccount.js
|- gmailPage.js
progrator.conf.js
gmail.feature
Feature: Gmail login page
@dev
Scenario: Create new gmail account
Given I see gmail home page
When I Create an account
Then I should see account creation form
gmailPage.js
'use strict';
var gmail = function () {
this.btnCreateAccount = driver.findElement(By.css('#gmail-create-account'));
};
module.exports = gmail;
'use strict';
var ca = function () {
this.inpFirstName = driver.findElement(By.css('#firstname'));
};
module.exports = ca;
'use strict';
var expect = require('chai').expect;
var gmail = new (require('../../pageObject/gmailPage'))();
var ca = new (require('../../pageObject/createAccount'))();
module.exports = function(){
this.Given(/^I see gmail home page$/, function (callback) {
driver.getCurrentUrl().then(function(url){
expect(url).to.contain('https://www.gmail.com/intl/en/mail/help/about.html');
callback();
});
});
this.When(/^I Create an account$/, function (callback) {
gmail.btnCreateAccount.click();
callback();
});
this.Then(/^I should see account creation form$/, function (callback) {
callback();
});
};
createAccount.js
'use strict';
var gmail = function () {
this.btnCreateAccount = driver.findElement(By.css('#gmail-create-account'));
};
module.exports = gmail;
'use strict';
var ca = function () {
this.inpFirstName = driver.findElement(By.css('#firstname'));
};
module.exports = ca;
'use strict';
var expect = require('chai').expect;
var gmail = new (require('../../pageObject/gmailPage'))();
var ca = new (require('../../pageObject/createAccount'))();
module.exports = function(){
this.Given(/^I see gmail home page$/, function (callback) {
driver.getCurrentUrl().then(function(url){
expect(url).to.contain('https://www.gmail.com/intl/en/mail/help/about.html');
callback();
});
});
this.When(/^I Create an account$/, function (callback) {
gmail.btnCreateAccount.click();
callback();
});
this.Then(/^I should see account creation form$/, function (callback) {
callback();
});
};
login.steps.js
'use strict';
var gmail = function () {
this.btnCreateAccount = driver.findElement(By.css('#gmail-create-account'));
};
module.exports = gmail;
'use strict';
var ca = function () {
this.inpFirstName = driver.findElement(By.css('#firstname'));
};
module.exports = ca;
'use strict';
var expect = require('chai').expect;
var gmail = new (require('../../pageObject/gmailPage'))();
var ca = new (require('../../pageObject/createAccount'))();
module.exports = function(){
this.Given(/^I see gmail home page$/, function (callback) {
driver.getCurrentUrl().then(function(url){
expect(url).to.contain('https://www.gmail.com/intl/en/mail/help/about.html');
callback();
});
});
this.When(/^I Create an account$/, function (callback) {
gmail.btnCreateAccount.click();
callback();
});
this.Then(/^I should see account creation form$/, function (callback) {
callback();
});
};
问题:
当我运行这个测试时,我得到了“NoSuchElementError”
,因为它正在寻找WebDriver.findElement(By.cssSelector(“#firstname”)
出现在createAccount.js中
我的问题是,为什么webdriver在调用页面对象之前要在文件中查找所需的页面对象。
为什么在使用量角器驱动程序时同样的用例会起作用?尝试在登录步骤模块中实例化页面对象
'use strict';
var expect = require('chai').expect;
var gmailPage = require('../../pageObject/gmailPage');
var createAccountPage = require('../../pageObject/createAccount');
module.exports = function(){
var gmail = new gmailPage();
var ca = new createAccountPage();
this.Given(/^I see gmail home page$/, function (callback) {
driver.getCurrentUrl().then(function(url){
expect(url).to.contain('https://www.gmail.com/intl/en/mail/help/about.html');
callback();
});
});
this.When(/^I Create an account$/, function (callback) {
gmail.btnCreateAccount.click();
callback();
});
this.Then(/^I should see account creation form$/, function (callback) {
callback();
});
};
你是对的,它会起作用的。但是,我想了解为什么在使用webdriver-driver时会发生这种情况,而在使用量角器驱动程序-ptor时不会发生这种情况。所以,您的问题应该更具体一些。