Protractor e2e 测试登录重定向

2024-04-30

目前有部分端到端测试,输入用户名/密码并单击“登录”。

它成功完成了这一操作,但在“谢谢您已登录”页面结束,而不是像我通过浏览器登录那样被重定向到“帐户门户”或“仪表板”。\

这个项目是新的,但我们正在使用 OAuth。

主要问题:这听起来像是需要 http 模拟吗?

更多细节:

spec.js

describe('login page', function() {
    browser.driver.get('http://url.path/login');
    it('should render login page', function() {

      // Checking the current url
      var currentUrl = browser.driver.getCurrentUrl();
      expect(currentUrl).toMatch('/login');
    });
    it('should sign in', function() {

      // Find page elements
      var userNameField = browser.driver.findElement(By.id('username'));
      var userPassField = browser.driver.findElement(By.id('password'));
      var userLoginBtn  = browser.driver.findElement(By.id('loginbtn'));

      // Fill input fields
      userNameField.sendKeys('[email protected] /cdn-cgi/l/email-protection');
      userPassField.sendKeys('1234');

      // Ensure fields contain what we've entered
      expect(userNameField.getAttribute('value')).toEqual('[email protected] /cdn-cgi/l/email-protection');
      expect(userPassField.getAttribute('value')).toEqual('1234');

      // Click to sign in - waiting for Angular as it is manually bootstrapped.
      userLoginBtn.click().then(function() {
        browser.waitForAngular();
        expect(browser.driver.getCurrentUrl()).toMatch('/success');
      }, 10000);
    });
});

如果我快速单击测试窗口,我可以看到它成功到达“成功”页面 - 但它不会重定向到仪表板(当您通过浏览器手动登录时它会重定向)。我如何继续此测试以保持登录状态并像用户一样访问仪表板?

// 项目新功能,角度和量角器。

编辑-总结一下:

  • 我想要量角器开始测试/login page
  • Protractor 应该找到并填写用户名和密码字段,然后单击“登录”
  • Protractor成功登录,可以看到/谢谢页面,然后立即重定向到用户的/仪表板 page
  • 也许我错过了一个步骤,我们需要在量角器测试中手动重定向吗?

(当用户通过浏览器手动登录时,他们看不到/谢谢页面 - 这是一个快速重定向到/仪表板。量角器无法到达仪表板页面。


您的帖子缺乏信息,但我会尝试做出假设:

我怀疑您的“谢谢您已登录”页面会在超时后进行 javascript 重定向。

因此,在您单击“登录”后,浏览器会加载“感谢您已登录”页面,并且由于第二个参数.then()什么也没做,browser.waitForAngular()失败是因为该页面上没有角度。

你应该尝试使用类似的东西browser.driver.wait()使用合理的超时来检测 url 更改(此处描述:https://github.com/angular/protractor/issues/610 https://github.com/angular/protractor/issues/610)和触发器browser.waitForAngular()浏览器访问后/success page.

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

Protractor e2e 测试登录重定向 的相关文章

随机推荐

  • 关于 JavaScript for() 循环巫毒

    在相当长的一段时间里 我一直有这样的印象 for循环可能存在solely采用以下格式 for INITIALIZER STOP CONDITION INC DEC REMENTER CODE 然而 这是最绝对事实并非如此 看看这个 Java
  • `SwaggerRequestExample` 被忽略

    当我向 API 添加 swagger 时 我想要获取默认值和响应示例 我添加了 NuGet 包并尝试遵循本教程 https mattfrear com 2016 01 25 generating swagger example reques
  • Shell Linux:grep 带有 NULL 字符的精确句子

    我有一个像这样的文件 key 0value n akey 0value n key2 0value n 我必须创建一个以单词作为参数的脚本 我必须返回具有与参数完全相同的键的每一行 I tried grep aF key x0 但 grep
  • python raw_input 带有包含字符串的重音符号的奇怪行为

    我正在编写一个程序 要求用户输入包含重音符号的输入 测试用户输入字符串以查看其是否与程序中声明的字符串匹配 如下所示 我的代码无法正常工作 code coding utf 8 testList m myInput raw input ent
  • 有没有办法在网站中嵌入维基百科文章并设置其样式?

    我想做的基本上是一个 div 元素 其中包含维基百科文章的打印友好版本 我使用 iframe 来嵌入文章并且它可以工作 尽管我无法设置文档的样式 我想这是因为 iframe 内容不在我的域中并且我没有编辑权限 有没有办法在加载 iframe
  • NPM 安装“在 M1 芯片上找不到模块‘node-darwin-arm64/package.json’”

    我知道这个问题已经被问到了不同的版本 但我还没有看到一个不涉及使用 Rosetta 安装或使用 zsh 伪造架构的解决方案 我使用 bash 并希望尽可能不处理 Rosetta 我是一个节点新手 正在努力找出失败的原因 节点 v16 14
  • 使用 ajaxFileUpload 上传具有不同文件 ID 的多个文件

    我正在尝试以同一表单上传多个文件 多个文件应该位于不同的字段中 我对单个文件使用 ajaxfileuploader 并使用 MultipartHttpServletRequest 接收它 它成功了 I used ajaxFileUpload
  • 如何使用 Vapor 3 处理多部分请求

    我是一名 Vapor 初学者 我选择从 Vapor 3 rc 开始 因为它似乎破坏了 Vaport 2 的更改 不幸的是 目前还没有完整的文档 我目前正在尝试将一个简单的 txt 文件从 Postman 上传到我的 Vapor 3 本地服务
  • 使 QLabel 可点击

    我有一个充满 QPixmap 的 Qlabel 我想在单击该标签后启动一个进程 函数 我扩展了 QLabel 类 如下所示 from PyQt5 QtCore import from PyQt5 QtWidgets import from
  • python celery - 导入错误:没有名为 _curses 的模块 - 尝试运行 manage.py celeryev 时

    背景 视窗 7 x 64 Python 2 7 姜戈1 4 Celery 与 Redis 捆绑包 在尝试运行 manage py celeryev 时 我在终端中收到以下错误 import curses File c Python2 lib
  • 使用 LinkedIn REST API 更新个人资料

    是否可以通过 LinkedIn API 更新个人资料的教育 专业和 或经验 我可以正常进行正常的 GET 调用 我在这里问是因为他们网站上的文档没有产生任何结果 而 Stackoverflow 会有更多的实践经验 编辑 进一步的搜索使我发现
  • 懒惰评估不那么懒惰吗?

    我一直听说 C 使用惰性求值 所以对于某些代码 比如if true DoExpensiveOperation 将返回true不执行DoExpensiveOperation 在面试测试中我看到了以下问题 static bool WriteIf
  • 在PC上的Firefox上模拟Android的Webview?

    作为我的软件开发工作 针对 Android 的一部分 我需要在通过 Android 的 WebView 查看时检查大量 HTML 页面的内容 到目前为止 我已经能够通过将 HTML 内容转储到文件中来实现这一点 data data
  • 在链接服务器上执行 SP 并将其放入临时表中

    需要有关以下问题的一些帮助 Case 1 存储过程位于服务器 1 上 调用来自服务器 1 declare tempCountry table countryname char 50 insert into tempCountry exec
  • AspectJ - 接口实现方法的切入点

    我有 SomeInterface 的几个实现 问题是 在 SomeInterface 的所有实现中 executeSomething 方法的切入点是什么 public class SomeImplementation implements
  • 为什么 mongoDB 节点驱动程序会创建不需要的连接?

    当我尝试使用版本 3 6 0 中的 mongodb Nodejs 本机驱动程序建立与数据库的单个 mongodb 连接时 遇到了一种奇怪的问题 我的想法是在所有客户端会话中只打开一个连接 并在我的 Express 服务器中的不同路由中重用它
  • 是否可以在 Android 或 Blackberry 上运行小程序?

    Java站点是这样的java com http www java com says KVM 移动设备的虚拟机 与 JVM Java 虚拟机 相对应 它用于在移动设备上运行用 Java 技术编写的小程序和应用程序 KVM 必须由制造商安装 它
  • TypeScript 出现错误 TS2304:找不到名称“require”

    我正在尝试启动并运行我的第一个 TypeScript 和 DefinelyTyped Node js 应用程序 但遇到了一些错误 当我尝试转译简单的 TypeScript Node js 页面时 收到错误 TS2304 找不到名称 requ
  • 如何在可组合项中使用 hilt 注入单例

    我正在尝试注入一个在可组合项内的 hiltmodule 中定义的单例类 我知道如何注入视图模型 但是单例类呢 Inject lateinit var mysingleton MySingletonClass 该代码在活动中运行良好 但将其从
  • Protractor e2e 测试登录重定向

    目前有部分端到端测试 输入用户名 密码并单击 登录 它成功完成了这一操作 但在 谢谢您已登录 页面结束 而不是像我通过浏览器登录那样被重定向到 帐户门户 或 仪表板 这个项目是新的 但我们正在使用 OAuth 主要问题 这听起来像是需要 h