我是一个新手试图不依赖或根本不依赖ptor.sleep()
来电,尤其是在点击下方后。下面的行永远不会获得值(它们都返回Nan),除非我在ptor.sleep(1000);
之后包含click()
调用。
我已经做了各种尝试,使得数组elem在点击结果之前解决,点击功能之后等等,但是我没有试过没有睡眠调用的情况。已经阅读了量角器控制流程。
devCountString = parseInt(arr[i]);
感谢您提供任何见解,也许我已经错过了一些明显的内容,以便我可以删除ptor.sleep()
来电。
我的规格:
describe('\n == patch List suite results == \n', function() {
// login already was done in config files, onPrepare function.
var ptor, noFilterCount;
// needed here if we turn ptor.ignoreSynchronization = false;
beforeEach(function() {
ptor = protractor.getInstance();
ptor.ignoreSynchronization = true;
browser.get('https://my.abc.com:3000/fixes');
ptor.sleep(1200);
}); //end beforeEach()
it('11 - verify filter fewer', function() {
var sevStringElm, sevString;
var applicableCount;
ptor.ignoreSynchronization = false;
ptor.sleep(500);
sevStringElm = element(by.css("input.form-control.bf-spinner"));
sevStringElm.clear();
ptor.sleep(500);
sevStringElm.sendKeys( '8' );
ptor.sleep(500);
// click on the "fewer" spinner, wrap the click to wrap the .
var fewerPromise = element(by.css("span.bf-spinner-toggle:nth-child(2)")).click();
ptor.sleep(1000);
// now get the list of clickable elements in each device card. by title
var applicableDevicesElm = element.all(by.css("[title$='Applicable\ Devices']"));
applicableDevicesElm.getText().then(function(arr) {
console.log("arr.length= "+arr.length);
for (var i = 0; i < arr.length; i++) {
devCountString = parseInt(arr[i]);
expect(devCountString).toBeLessThan( 9 );
};
});
});
答案 0 :(得分:0)
每次动作进入webdriver时,Protractor都会将其放入流队列中,如图in the documentation所示。因此,当您在单击后检查元素时,队列应该已经解决了依赖关系,并为查找程序准备好您的状态。在任何情况下,即使您不希望Protractor对其操作(总是asyc)进行隐式包装,您也可以在单击后放置.then(function(){})
并将后点击逻辑放入那个匿名的回调函数。
另外,您应该再使用ptor
。使用browser
代替混合了量角器实例功能。示例:browser.sleep(1000)