3

有人可以帮助我了解 WebDriverJS/量角器在这种情况下是如何工作的吗?

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 控制流是否因为 s 的.get方法在第 6 行添加了一个动作ElementFinder

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

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

4

1 回答 1

3
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(),它公开了一个执行函数。

于 2015-06-25T15:22:12.503 回答