理解 Protractor 对 Promise 的使用

2023-12-11

本质上,我正在尝试建立一个用于设置先决条件的库(想想用户创建)。由于量角器是基于承诺的并且神奇地完成所有包装以保持秩序,我想到使用 Promise 来达到这个目的。我写了一些示例代码,但我无法解释观察到的行为,所以也许有人可以帮助我理解发生了什么。

function timeout(ms) {
    var promise = protractor.promise.defer();
    setTimeout(function() {
        console.log('qwer');
        promise.fulfill(true);
    }, ms);
    return promise.promise;
}

所以现在该函数返回一个承诺,我认为它可以像这样内联使用(因为所有代码都被包装在控制流中)

describe('test', function() {
  it('bla', function() {
    browser.get('/');
    timeout(5000);
    $('some-element').click();
  });
});

然而这并没有按预期工作(即 console.log 永远不会发生)。即使当expect从这个承诺中得到结果,它不会改变结果。如果实际上明确地等待通过执行完成timeout(5000).then(done),超时完成,但在该操作之后下一个操作不会排队(即打开站点,单击元素,然后 5 秒后发生超时日志)。

所以我真的很困惑如何使用控制流来确保一切按顺序执行的声明和观察到的行为如何结合在一起。


仅仅创建一个是不够的protractor.promise延迟对象 - 您需要告诉控制流它。这通常是通过protractor.promise.controlFlow().execute().

function timeout(ms) {
  protractor.promise.controlFlow().execute(function() {
    var deferred = protractor.promise.defer();
    setTimeout(function() {
      console.log('qwer');
      deferred.fulfill(true);
    }, ms);
    return deferred.promise;
  });
}

通读https://code.google.com/p/selenium/source/browse/javascript/webdriver/promise.js这里有幕后的所有魔法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解 Protractor 对 Promise 的使用 的相关文章

  • 浏览器安全错误:“由于安全违规,此页面无法显示”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在一家网络开发公司工作 我为我们的一些营销人员设计了一个页面 以便将自定义页脚添加到我们应用程序中的各个页面 在部署我们的产品供
  • 如何在 Angular 中按 ID 显示博客详细信息

    我想在 Angular 中通过 ID 显示博客详细信息 为此 当您单击博客主页上的按钮时 应用程序会将您带到博客详细信息页面 即 pagina component html 文件 我实现了在此处显示所有博客 但我真正想要的是显示一个独特的博
  • 如何在 Jasmine JS 中重用 beforeEach/afterEach?

    当使用 JasmineJS 编写测试时 我有许多具有类似 beforeEach afterEach 代码的测试 有没有办法使用 JasmineJS 测试套件实现继承模型 我可以将所有测试分组为一个describe但在这种情况下 我将以包含所
  • 角度单元格 xlsx 着色

    我有一个问题 我想根据一个值在我的 exel 行中添加红色或绿色来下载 如何在工作表中设置指定单元格的颜色 这是处理 exel 格式的 ts 类 表达 import Injectable from angular core import a
  • 计算两列中两个总和的平均值,并将其显示在 JQGrid 的下一列中

    I m using Jqgrid with summery row at grouping level Now I want to know one thing that Is it possible to show average cal
  • Bootstrap 页脚不在底部

    我试图强制我的页脚位于网站底部 我不希望它在滚动时粘住 只是在向下滚动网页时出现在底部 目前 网页显示时页脚位于内容下方 我添加了这样的代码bottom 0 并发现它粘住了并且不适合我的网站 我还添加了这样的代码html body heig
  • 使用 mongoDB 插入子文档

    我收集了以下文件 id 2 workspace name 1 widgets name 2 widgets name 3 widgets name 4 widgets 我怎样才能插入 id 1 blabla blabla 在 小部件 中的
  • 在 Javascript 中隐藏按钮

    在我最新的程序中 有一个按钮 单击时会显示一些输入弹出框 这些框消失后 如何隐藏按钮 You can set its visibility财产 http www w3schools com cssref pr class visibilit
  • 通过标记或JS强制下载

    假设我在 CDN 来自 Rackspace 的云文件 上有一个文件 以及一个包含该文件链接的静态 html 页面 有什么方法可以强制下载此文件 以防止它在浏览器中打开 例如 mp3 我们可以让我们的服务器读取该文件并将相应的标头设置为 he
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if
  • 如何在 Google 地图上旋转叠加图像?

    我正在尝试将一系列叠加层放置到 Google 地图上 我正在跟随地面覆盖层的示例代码 https developers google com maps documentation javascript examples groundover
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • Google Maps API - 调整大小会生成空白区域

    我正在研究一个看起来非常简单的功能 但却引起了一些头痛 我使用 GIS 并将其与 Google 地图集成 其中一位客户要求能够打开一个仅显示地图的单独弹出窗口 打开窗口不是问题 但当我尝试扩展包含地图的 IFrame 的宽度时 为了适应窗口
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • 如何从 Instagram 的 media_preview 原始数据重新创建预览?

    如果您从 Instagram 的 API 获取 JSON 数据 您会发现media previewkey 其值是一些 Base64 编码的数据 它看起来确实像一些非常小的预览二进制数据 也许是压缩的 Take 这个帖子 https www
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • 如何从索引文件迭代多个导入的模块

    我有一个名为Polygons我在那里创建了一个index jsfile 以导出目录中的所有文件 它看起来像这样 export default as europe from europe export default as northAmer
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio

随机推荐

  • 如何将两个Excel文件及其工作表名称合并为一个?

    为了合并两个 Excel 工作表 我使用下面的代码 using System using Excel Microsoft Office Interop Excel using System Reflection namespace Merg
  • javascript用户选择突出显示

    我试图找到一种使用 javascript 的方法来突出显示用户在单击某些奇怪的突出显示按钮时选择的文本 如 突出显示的文本 它只需要与 WebKit 或 Firefox 一起工作 但这似乎几乎是不可能的 因为它必须在以下情况下工作 p th
  • 相邻元素相乘

    我有一个整数元组 例如 1 2 3 4 5 我想生成元组 1 2 2 3 3 4 4 5 通过相邻元素相乘 是否可以用单行代码来完成此操作 简短而甜蜜 请记住zip只运行最短的输入 print tuple x y for x y in zi
  • 查找:`./folder':没有这样的文件或目录

    这是我正在使用的目录的内容 misha hp laptop work c 5 ls l total 8 rw rw r 1 misha misha 219 May 20 15 37 demo c drwxrwxr x 2 misha mis
  • 是否可以使用按键侦听器显示以前隐藏的 JFrame

    这是我的代码 我基本上只是为最常见的侦听器做了一个测试器 我稍后可能会在未来的项目中使用它 主要问题是在底部的关键侦听器中 我正在尝试重新显示框架 但我认为它只是不能那样做 请帮忙 ps 不知道为什么导入没有正确显示 package new
  • 如何像 instagram uwp 应用程序一样动画网格背景?

    The background keeps on transforming from one gradient to other very beautifully I have no idea from where to start Belo
  • ASP.NET MVC - 按角色显示表单值

    我正在寻找一种理想的方式 让我的输入表单根据角色显示为文本框 可编辑 标签 只读 或隐藏 无法访问 我知道我可以对每种类型的角色有不同的看法 但我希望有一些新的优点可以让我不必做 80 次观看 实际上 这完全取决于您想要在哪里设置与安全相关
  • 我无法在 Eclipse 2023-09 (4.29.0) 中运行 JUnit 5.9.x 测试

    Hi I ve start with start spring io just like below and I was trying to check if test is okay or not by default 但这还没有开始 我
  • 如何检查字符串是否是有效的 JSON 字符串?

    isJsonString Id 1 Name Coke 应该true and isJsonString foo isJsonString div foo div 应该false 我正在寻找一个不使用的解决方案try catch因为我将调试器
  • 当使用 ATL 宏处理 DWebBrowserEvents2 时处理 HTMLElementEvents2

    我正在使用 VS2008 C 创建浏览器帮助程序对象 我的类派生自 IDispEventImpl 等 class ATL NO VTABLE CHelloWorldBHO public CComObjectRootEx
  • org.lwjgl.system.Library错误

    我在 Eclipse 中设置了 LWJGL 3 当我尝试运行测试代码时 它给了我这个错误https www lwjgl org guide Exception in thread main java lang NoClassDefFound
  • 学习如何转换数字输入

    第一次提问 我正在学习如何转换数字输入 从 edX 课程学习并使用 jupyter 笔记本 这是我的代码 calc 1 input What is the first number use integers calc 2 input Wha
  • 如何将多个dll包装在一个dll中[重复]

    这个问题在这里已经有答案了 可能的重复 合并 net托管的dll 我创建了一个测试项目 在其中引用了其他项目中的 dll 当我构建测试项目时 我看到测试项目和引用的 dll 不同 我想将两个 dll 包装在一个 dll 中 我该怎么做 看看
  • 如何在矩形上创建和分布对角条纹?

    我希望能够使用 JFreeChart 创建类似于下图的条形图 这是一个非常基本的单色条形图 但有一个 花哨 的细节 对角条纹 我想这可以通过在普通栏上叠加另一张图片来实现 该图片的尺寸与条形图相同 具有对角白色条纹和透明背景 我不太确定如何
  • 如何在pandas中进行“(df1而不是df2)”数据框合并?

    我有 2 个 pandas 数据框 df1 和 df2 具有公共列 键 x y 我想在键 x y 上进行 df1 not df2 合并 这意味着我希望我的代码返回一个包含 x y 行的数据帧 仅在 df1 中而不是在 df2 中 SAS 具
  • Spark:DF.as[Type] 无法编译

    我正在尝试运行 Spark 书中的示例Spark The Definitive Guide build sbt ThisBuild scalaVersion 3 2 1 libraryDependencies Seq org apache
  • 在 DDD 架构中,我应该在哪里保存辅助类?

    我正在从事一个 DDD 项目 其中包含以下层 UI 应用程序 域和基础设施 助手类应该住在哪里 Update 例如 我正在谈论对象转储器助手 类如 Something Helper Something Manager and Somethi
  • 分割功能无法正常工作

    我正在尝试使用分割字符串Splitjava中的函数 String empName employee name employee Email String empDetails empName split 它给我的结果是 empDetails
  • 如何将 libpqxx 库添加到 cmake 中?

    我正在做我的C 简单的项目 我遇到了一个关键问题CMakelists txt 我无法链接libpqxx库正确 我在用 C 17 CMake 3 10 乌班图16 04 CLion This my CMakelists txt cmake m
  • 理解 Protractor 对 Promise 的使用

    本质上 我正在尝试建立一个用于设置先决条件的库 想想用户创建 由于量角器是基于承诺的并且神奇地完成所有包装以保持秩序 我想到使用 Promise 来达到这个目的 我写了一些示例代码 但我无法解释观察到的行为 所以也许有人可以帮助我理解发生了