等到条件满足Selenium-Webdriver

我正试图在seleniumwebdriver的条件之上创造额外的条件。 我仍然试图把握承诺和callback的完整概念。 由于堆栈溢出的帮助,我得到了很大的改进。 我不确定如何在JavaScript中每隔几秒重复一个条件。 我的遗传也可能是错的。

var WebElementCondition = require('./selenium-webdriver/lib/until'); var ExpectedConditions = function() { this.waitForWindowWithTitle = function (title) { return driver.getAllWindowHandles().then(function (title, handles) { console.log(handles.length + ' .then function'); for (var window in handles) { if (window.title === title) { return true; } else { return false; } } }); } } module.exports = ExpectedConditions; require('util').inherits(module.exports, WebElementCondition); 

在waitForWindowWithTitle函数中,我会做类似的事情

 return driver.wait(10000).then(function() { driver.getAllWindowHandles().then(function (title, handles) { console.log(handles.length + ' .then function'); for (var window in handles) { if (window.title === title) { return true; } else { return false; } } }); }); 

你可以使用wait来接受任何JS函数来创build自定义条件。 这里是一个例子,检查angular度准备就绪。

 // Wait for Angular to Finish function angularReady(): any { return $browser.executeScript("return (window.angular !== undefined) && (angular.element(document).injector() !== undefined) && (angular.element(document).injector().get('$http').pendingRequests.length === 0)") .then(function(angularIsReady) { return angularIsReady === true; }); } $browser.wait(angularReady, 5000).then(...); 

等待types定义

 wait<T>(condition: promise.Promise<T> | until.Condition<T> | ((driver: WebDriver) => T) | Function, timeout?: number, opt_message?: string): promise.Promise<T>;