【发布时间】:2017-06-02 15:55:18
【问题描述】:
我是 Angular2 的新手,还没有开发要测试的 Angular 组件。但是,我应该编写一些 UI (e2e) 测试,但我什至无法在输入字段中输入文本。
我的问题是
element(by.id('username')).sendKeys('test')
不管用。 (与 Button 元素等相同)
我确定这只是一件小事,但我无法找出它是什么。
我有以下配置:
- 监考人员:5.1.2
- chrome 驱动程序:58.0.3029.110
- 操作系统:Windows NT 6.1.7601 SP1 x86_64
规格文件:
import { LoginPage } from './login.po';
describe('login tests', function() {
let page: LoginPage;
beforeEach(() => {
page = new LoginPage();
});
it('Demo', () => {
page.navigateTo();
page.getUsernameInput().sendKeys('test');
});
});
页面对象文件:
import { browser, element, by } from 'protractor';
export class LoginPage {
navigateTo() {
return browser.get('/login');
}
getParagraphText() {
return element(by.class('app-root h1')).getText();
}
getUsernameInput() {
return element(by.id('username'));
}
}
HTML 模板:
....
<div>
<input
id="username"
name="username"
ngModel
type="text"
placeholder="{{something}}"
autocomplete="off"
class="input-text"
required>
</div>
...
量角器配置
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 120000,
getPageTimeout: 120000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
seleniumAddress: 'http://localhost:4444/wd/hub',
baseUrl: 'http://localhost:8001',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};
非常感谢任何帮助。
编辑:
在我的情况下,没有一个解决方案有效。我最终使用browser.driver.findElement(by.id('username')); 而不是element(by.id('username')); 这令人不满意,因为我仍然不明白为什么这不起作用。如果有人能给我提示或解释,我将不胜感激。
【问题讨论】:
-
您遇到的错误是什么?请添加您遇到的错误。
-
错误我的意思是不会插入文本。但我在控制台上没有看到任何错误消息。
标签: javascript angular protractor e2e-testing