了解量角器和 WebDriverJS 控制流

Understanding Protractor and WebDriverJS control flow

本文关键字:控制流 WebDriverJS 量角器 了解      更新时间:2023-09-26

有人能帮我理解WebDriverJS/Protractor在这种情况下是如何工作的吗?

function MyPageObject(buttonElementFinder) {
  this.getButtonByIndex = function(index) {
    return {
      myButton: buttonElementFinder.get(index)
    }
  }
}
1. describe('My button', function() {
2. 
3.   it('should contain the text foo', function() {
4.     var myElementFinder = element.all(by.css('.foo'));
5.     var pageObject = new MyPageObject(myElementFinder);
6.     var button = pageObject.getButtonByIndex(0);
7.     expect(button.text()).toBe('foo');
8.  });
9. 
10. });

WebDriverJS 控制流是否由于 ElementFinder s 的.get方法在第 6 行添加了操作?

我想expect也在第 7 行向控制流中添加了另一个项目?

编辑:我已经更新了代码以使用element.all

var myElementFinder = element.all(by.css('.foo'));

myElementFinder是一个ElementArrayFinder,只是一个对象。这里没有发生任何异步事件。

var pageObject = new MyPageObject(myElementFinder);

明显。

var button = pageObject.getButtonByIndex(0);

这将从buttonElementFinder.get返回一个ElementFinder。这里没有发生任何异步事件。

expect(button.text()).toBe('foo');

button.text()Webdriver.schedule返回一个承诺,而又使用使用webdriver.promise.controlFlow()检索的控制流,这公开了一个执行函数。