[英]Protractor E2E Testing Error : Object [object Object] has no method 'getWindowHandle'
[英]angularJS Protractor e2e Testing TypeError: Object [object Object] has no method 'input'
我有一个有两页的应用程序......第一页是登录页面,其中有一个登录按钮...一旦用户点击此登录按钮,他们就被重定向到login.html ....其中有两个输入。 一个用于用户名,一个用于密码。
相关代码如下所示:
index.html
<a ui-sref="login" class="fa fa-sign-in" href="/login"> Login</a>
和
login.html
<input type="text" id="username" name="username" placeholder="Username" ng-model="user.username" required="" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required">
<input type="password" name="password" placeholder="Password" ng-model="user.password" required="" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required">
在我的测试中,我首先单击登录按钮并检查我是否已正确重定向到新页面。 这个测试通过,但是当我尝试输入这些输入框时,我得到一个错误,好像这些框不存在一样。 我试图做浏览器睡眠,但这也没有用。
// in test/e2e/main.spec.js
describe('E2E: main page', function(){
'use strict';
var ptor;
// keep track of the protractor instance
beforeEach(function(){
browser.get('http://127.0.0.1:9000/');
ptor = protractor.getInstance();
});
it('it should load the login page once the login button is clicked', function(){
var link = element(by.css('.fa.fa-sign-in'))
link.click();
browser.sleep(4000);
expect(ptor.getCurrentUrl()).toMatch(/\/login/);
element(by.input('user.username')).sendKeys('test');
element(by.input('user.password')).sendKeys('test');
});
});
有什么建议?
更新:
使用by.model而不是by.input可以正常工作,但我正在阅读的书说第一个应该也可以工作。
已经折旧了by.input()
定位器,您应该使用by.model()
但是如果您确实需要,可以定义自己的,例如:
by.addLocator('input', function(model, opt_parentElement) {
using = using || document;
var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng\\:'];
for (var p = 0; p < prefixes.length; ++p) {
var selector = 'input[' + prefixes[p] + 'model="' + model + '"]';
var inputs = using.querySelectorAll(selector);
if (inputs.length) {
return inputs;
}
}
});
// To use the locator
element(by.input('username')).sendKeys('test');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.