首先,注意
selenium-cucumber-js
使用的是相当旧的版本
cucumber-js
(1.3.3对5.0.2在写这篇文章的时候)。当你咨询的时候要记住这一点
黄瓜JS
或寻找例子。下面,我将发布链接到
cucumber-js@1.3.3
博士学位。
至于在您的设置中不起作用的内容:
-
scenario
传递到挂钩中的对象没有附加页面对象。它只包含一些关于场景和获取场景的方法的元信息。以下是它们的列表:
cucumber-js docs
-
如果要从挂钩引用页面对象,可以使用全局
page
如下所述:
Page objects - selenium-cucumber-js
-
你的
loginApp()
函数可能仍然不起作用,因为您访问WebDriver时
this.driver
和助手
this.driver.helpers
. 它们也被全球定义为
硒黄瓜JS
:
Helpers
所以,你的
hooks.js
应该如下所示:
module.exports = function () {
this.BeforeScenario(function(scenario, done) {
console.log('BeforeScenario: ' + page.login.loginApp());
done();
});
};
还有你的
login.js
:
module.exports = {
loginApp(){
helpers.loadPage('https://example.com')
driver.findElement(by.id('HomeLogin_Username')).sendKeys("Tester");
driver.findElement(by.id('HomeLogin_Password')).sendKeys("SomePassword123");
let lgBtn = By.css('div#login-fields>div>button');
driver.findElement(lgBtn).click();
}
};