有人可以帮助我了解 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/