[英]Protractor HTTP GET request
在我的量角器测试中,我正在尝试点击一个端点,该端点将重置当前登录用户的所有数据。 现在,我使用普通的旧javascript在beforeAll
命中该端点,并且它已成功击中它,但是现在我的测试在页面刷新之前执行导致它们失败。 这是我目前的代码:
var EC = protractor.ExpectedConditions,
el = element(by.css('body div.modal-x'));
browser.executeAsyncScript(function() {
var inj = angular.element(document.body).injector();
var reHTTP = inj.get('reHTTP');
var myService = inj.get('myService');
var someVar = myService.getCurrent().definition.userName;
console.log(someVar); // works
reHTTP.get('/app/' + someVar + '/reset').then(function () {
// console.log('i am here'); // this works
// alert('Success!'); // this works
return browser.wait(EC.visibilityOf(el)); // this does not work
});
});
问题:我不能在executeScript块中使用Protractor函数,因为我现在在浏览器上下文中。 即EC
未定义
问题:如何在访问此端点的同时正确访问/使用我的ExpectedConditions
(同样,我目前在beforeAll
块中使用此功能)?
有几点需要注意:
browser.executeAsyncScript
那么angular
是未定义的,我无法访问服务(或者我找不到另一种方式) executeScript
(而不是AsyncScript)失败甚至比异步脚本更快 有任何想法吗?
executeAsyncScript
方法期望调用回调函数。 您可以在请求返回结果后调用它:
var EC = protractor.ExpectedConditions,
el = element(by.css('body div.modal-x'));
browser.executeAsyncScript(function(callback) {
var inj = angular.element(document.body).injector();
var reHTTP = inj.get('reHTTP');
var myService = inj.get('myService');
var someVar = myService.getCurrent().definition.userName;
console.log(someVar); // works
reHTTP.get('/app/' + someVar + '/reset').then(function () {
callback();
});
});
browser.wait(EC.visibilityOf(el));
我们在beforeEach
和afterEach
使用rest调用。 使用browser.ignoreSynchronization = true;
在您的beforeAll
函数开始时打破角度同步,然后在脚本之后,确保重置browser.ignoreSynchronization = false;
。
例如:
beforeEach(function() {
browser.ignoreSynchronization = true;
browser.executeAsyncScript();
browser.ignoreSynchronization = false;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.