等到满足条件 Selenium-Webdriver

Wait until condition is met Selenium-Webdriver

本文关键字:Selenium-Webdriver 条件 满足      更新时间:2023-09-26

我正在尝试在硒网络驱动程序条件之上创建其他条件。我仍在努力掌握承诺和回调的完整概念。由于堆栈溢出的帮助,我得到了极大的改善。我不确定如何在 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);

在等待窗口与标题函数中,我会做类似的事情

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;
            }
        }
    });
});

您可以使用接受任何JS函数的wait来创建自定义条件。下面是一个检查角度何时准备就绪的示例。

// 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(...);

等待类型定义

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