我刚刚开始使用Protractor。
这是我的问题:
我想登录网站。页面加载时,它会在显示“用户名”和“密码”字段之前显示旋转加载轮,并显示“登录”按钮。
我的问题是,clear()
或sendKeys()
的任何尝试都会失败,因为屏幕上尚未显示字段,并且量角器正在尝试与它们进行交互。
InvalidElementStateError:元素状态无效:元素不是 目前可互动,可能无法操纵。
我注意到的是,在页面源中,旋转轮最初有class='ngscope'
,一段时间后它变为class='ng-scope ng-hide'
整个事情就是这样:
<div ng-show="Model.Busy" class="ng-scope ng-hide">
<div ng-class="{'control--inline': small, 'div-centre': !small}" class="div-centre">
<img ng-src="/assets/img/loading.gif" ng-class="{'very-small-loading': small}" src="/assets/img/loading.gif">
</div>
</div>
我正在使用的代码是:
describe('Testing', function() {
browser.driver.manage().window().maximize();
var username = element(by.model('Model.Username'));
var password = element(by.model('Model.Password'));
var loginbutton = element(by.css('[ng-click="Model.Logon()"]'));
beforeEach(function() {
browser.get('MY WEBSITE');
});
it('should log me in', function() {
// expect($('[ng-show=Model.Busy].ng-hide').isDisplayed()).toBeTruthy(); <-- this fails
username.clear();
password.clear()
username.sendKeys('1');
password.sendKeys('2');
loginbutton.click();
});
});
如何使这项工作?
答案 0 :(得分:3)
您必须等到加载动画隐藏,然后尝试使用量角器的内置charindex
功能处理页面上显示的元素。一种方法是等待元素显示使用presenceOf()
功能。这是如何 -
SELECT CHARINDEX('t', 'TechOnTheNet.com', 3); -- Result: 7
希望它有所帮助。