javascript - 了解 Protractor 和 WebDriverJS 控制流

标签 javascript selenium protractor webdriverjs

有人可以帮助我了解 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.get 方法而在第 6 行添加了一个 Action ?

我假设 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 返回一个 promise,后者又使用通过 webdriver.promise.controlFlow 检索的控制流(),它公开了一个执行函数。

关于javascript - 了解 Protractor 和 WebDriverJS 控制流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052630/

相关文章:

c# - 如何以 headless 模式启动 ChromeDriver

javascript - Protractor ,我什么时候应该在点击后使用 then()

java - Webdriver 确实存在时没有这样的元素,我已经等待了足够长的时间

python - 第一次测试后 Selenium 测试失败

javascript变量单独上一行,为什么?

javascript - jQuery this() 似乎不起作用

angularjs - Protractor 使用 element.all 检查元素是否存在于 LIST 上

javascript - Protractor :无论选择下拉列表的可见性如何,始终获取选择选项状态 "displayed"

javascript - 如何使用 vanilla JavaScript 编写我在 JQuery 中编写的切换函数?

javascript - json2html 事件数据示例