【发布时间】:2019-12-12 20:50:54
【问题描述】:
我有一个这样的文件夹结构: project structure
我正在关注this tutorial
我的 package.json 文件是这样的:
{
"name": "node_cucumber_e2e",
"version": "1.0.1",
"description": "Sample E2E by Bill to learn cucumber and protractor",
"main": "index.js",
"scripts": {
"start": "node index.js",
"start-driver": "node .\\node_modules\\protractor\\bin\\webdriver-manager start",
"update-driver": "node .\\node_modules\\protractor\\bin\\webdriver-manager update",
"protractor": "node .\\node_modules\\protractor\\bin\\protractor configs/protractor.conf.js"
},
"keywords": [
"Sample_project",
],
"author": "",
"license": "MIT",
"devDependencies": {
"protractor": "^5.4.2"
}
}
我做以下事情:
- 在本地安装 protractor
- 通过
npm run update-driver更新webdriver-manager - 通过
npm run start-driver启动webdriver-manager - 编辑 protractor.conf,如下所示
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [`../tests/e2e/specs/*.js`],
baseURL: 'http://localhost:8080/',
framework: 'jasmine',
}
然后当我尝试通过npm run protractor 启动量角器时,浏览器是打开的,但是它没有转到我指定的 url,控制台是这个 ==> output console
我的spec js文件是,希望有人能帮帮我
describe('Protractor Demo App', function() {
it ('should have a title', function() {
browser.get('https://juliemr.github.io/protractor-demo/');
expect(browser.getTitle()).toEqual('Super Calculator');
});
});
【问题讨论】:
-
您提供的教程在
browser.get的返回值上调用then,这意味着browser.get返回一个Promise。您还应该致电then或切换到async/await。我查看了the documentation 的browser.get并且它具有误导性,看起来该方法不是同步的,查看the actual code 的browser.get它肯定是返回一个Promise。 -
@JakeHolzinger 在低于 6 的量角器版本(OP 正在使用)中,除非使用配置中的
SELENIUM_PROMISE_MANAGER:false设置明确禁用,否则使用 webdriverJS 的承诺管理器在幕后处理承诺。这允许以上述方式编写异步操作。我不知道为什么那个教程是这样写的,因为那不应该是必需的。 OP,您可以尝试在.get之后添加browser.driver.sleep(5000)并验证相同的行为吗
标签: javascript node.js testing protractor