【问题标题】:Understanding Protractor and WebDriverJS control flow了解量角器和 WebDriverJS 控制流
【发布时间】:2015-06-25 23:22:12
【问题描述】:

有人可以帮我理解 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. });

由于ElementFinders 的.get 方法,WebDriverJS 控制流是否在第 6 行添加了一个操作?

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

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

【问题讨论】:

  • ElementFinder 上的 get() 方法需要什么?我不记得ElementFinder 上存在这种方法。谢谢。
  • 这条线可能有用吗? github.com/angular/protractor/blob/…
  • 是的,但这是ElementArrayFinderelement.all() 的结果)。
  • 好的,我已经更新代码以使用element.all。遗漏是在将我的实际代码转换为针对该问题缩减的代码时出现错误。

标签: javascript selenium protractor webdriverjs


【解决方案1】:
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 返回一个promise,它又使用通过webdriver.promise.controlFlow() 检索的控制流,它公开了一个执行函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 2013-04-08
    • 2019-01-08
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多