javascript - 等待直到满足条件 Selenium-Webdriver

标签 javascript node.js selenium-webdriver

我正在尝试在 selenium-webdriver 条件之上创建附加条件。我仍在尝试掌握 promise 和回调的完整概念。感谢堆栈溢出的帮助,我有了很大的进步。我不确定如何在 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 函数来创建自定义条件。这是一个检查 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(...);

等待类型定义

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

关于javascript - 等待直到满足条件 Selenium-Webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749757/

相关文章:

javascript - 为什么 Node JS 中需要 LIBUV?

java - 为什么我们在 selenium 中使用 set in window handles 而不是 list?

java - 通过xpath获取webelement的文本

java - Java 中的 ChromeDriver 实例化永远挂起?

javascript - 关于 javascript 范围的澄清

javascript - 传递一个带有参数的函数作为参数,但它采用调用函数的参数?

node.js - 改变模式内的表 - postgres + sequelize

node.js - IBM Cloudant 的聚合查询,基本上是 couchDB

javascript - 谷歌驱动器中包含的 KML 文件无法识别

javascript - parent 删除不适用于 append 元素