当前位置: 首页 > 面试题库 >

AngularJS,使用angular-captcha进行e2e测试

况喜
2023-03-14
问题内容

我实际上正在尝试e2e测试我的简单应用程序,并且在处理angular-
recaptcha(https://github.com/VividCortex/angular-
recaptcha
)时遇到一些麻烦。

这是我的测试:

  it('should redirect on another page', function() {

    browser.get('http://127.0.0.1:3000/#/');
    var userName = element(by.model('auth.loginInfos.username'));
    userName.sendKeys('consumer1@eco.com');

    var password = element(by.model('auth.loginInfos.password'));
    password.sendKeys('consumer1');



    var recapt = element(by.id('recaptcha'));
    recapt.sendKeys();/* How can I put the recaptcha value to true ? */

    var btn = element(by.className('btn'));
    btn.click();
    /**
     * Assertions etc...
     */

  });

因此,您可以看到我正在尝试填充Recaptcha值,但我不知道如何进行。

你能帮助我吗 ?

注意:我正在使用量角器

谢谢你的帮助


问题答案:

验证码已加载到中iframe,您需要在尝试检查之前将其切换为:

browser.switchTo().frame(0);

0帧索引在哪里。您可以使用框架名称,ID或先前找到的框架元素

使用recaptcha演示页面的样本测试:

"use strict";

describe("Recaptcha", function () {
    beforeEach(function () {
        browser.ignoreSynchronization = true;
        browser.get("http://vividcortex.github.io/angular-recaptcha/");
    });

    it("should click the captcha", function () {
        browser.switchTo().frame(0).then(function () {
            var checkbox = $(".recaptcha-checkbox-checkmark");

            // first hover the checkbox
            browser.actions().mouseMove(checkbox).perform();

            // hardcoded delay
            browser.sleep(500);

            // okat, now click - TODO: may be we should click with browser.actions().click() and provide the x, y coordinates for where to click
            checkbox.click();
        });

        // expectations
    });
});

请注意,在我的情况下,单击后,它会要求选择某些图像,这些图像恰好可以完成不让我的硒自动化机器人通过测试的工作。如果您想实际通过验证码,请按照新的GooglereCAPTCHA如何工作?页以及有关此验证码工作原理的已知信息,我将尝试以下操作:

  • 使用您之前使用过的预加载配置文件打开浏览器(至少具有浏览历史记录)
  • 在启动测试的浏览器中登录到Google帐户
  • 不要单击复选框,click()并像普通人一样单击带有偏移量的复选框
  • 在浏览器动作之间延迟播放

另一点是,您无需e2e测试验证码的工作原理-
它超出了应用程序的端到端测试范围。寻找一种方法来禁用/关闭测试用户的验证码,或者禁用将针对其运行测试的特定版本的验证码。



 类似资料:
  • 我的目标是建立一个环境,让CircleCI在不同的浏览器中运行BrowserStack上的e2e测试。 我的测试假设有一个模拟服务器在运行。(例如,测试正在检查是否已对模拟服务器进行了某个调用。)

  • 本文向大家介绍AngularJS使用angular-formly进行表单验证,包括了AngularJS使用angular-formly进行表单验证的使用技巧和注意事项,需要的朋友参考一下 当验证表单中有很多字段时,这时候可能希望把html的生成以及验证逻辑放到controller中,在页面,也许是这样的: 然后,在controller中定义各个字段以及验证。angular-formly就是为这个需

  • 问题内容: 我一直在尝试AngularJS e2e测试, 并且在确定是否选中复选框时陷入困境。 我用端为端测试复选框输入作为样品(见 端对端测试 中的标签 实施例 )。 HTML片段: 控制器代码段: 这是我尝试过的: 1) 只要在屏幕上显示,它就可以在样品首尾测试中起作用。如果您在本地测试并删除`{{value1}},则绑定测试将失败。在我的大多数实际示例中,我并未在屏幕上的任何位置显示复选框值

  • 前言 吐槽 e2e测试在前端测试中,也许是最不被看重的一项吧。 小公司就不说了,即使是大厂,也极少有e2e测试。因为它需要花费的精力,相比得到的回报而言,可以说是相差悬殊,说白了,就是吃力不讨好- -|| e2e测试其实就是模拟用户行为,我们得根据业务写各种各样的不同操作。而几乎所有的项目,业务都是会变的。所以,因为业务变了,模拟用户行为也会随之改变。最后,就各种改,即改业务代码,又改测试代码,结

  • 问题内容: 我有一个已定义的AngularJS指令。我正在尝试与Jasmine进行单元测试。 根据此建议,我的JasmineJavaScript如下所示: 当我在Jasmine spec错误中运行此命令时,出现以下错误: 我想要的只是让templateUrl原样加载- 我不想使用。我相信这可能与使用ngMock而不是ngMockE2E有关。如果是罪魁祸首,如何使用后者而不是前者? 提前致谢! 问题

  • 使用Jersey测试框架提供程序inmemory、h2数据库和org为Jersey REST API设计和运行e2e集成测试的正确方法是什么。springframework。jdbc。果心JdbcTemplate? 要求: 测试范围应该是端到端的:从资源开始,通过所有应用程序到h2数据库。 写作测试: 目前,如果从IDE的JUnit一起运行,我的JUnit集成测试会失败,主要是因为它们相互干扰(与