【问题标题】:Angularjs, e2e test with angular-recaptchaAngularjs,使用 angular-recaptcha 进行 e2e 测试
【发布时间】:2016-05-19 13:40:56
【问题描述】:

我实际上是在尝试对我的简单应用程序进行 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 值,但我不知道如何继续。

你能帮帮我吗?

注意:我正在使用量角器

感谢您的帮助

【问题讨论】:

    标签: javascript angularjs selenium protractor


    【解决方案1】:

    验证码加载在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
        });
    });
    

    请注意,在我的情况下,单击后,它会要求选择某些图像,这些图像完全可以完成不让我的 selenium 自动化机器人通过测试的工作。如果您想真正通过验证码,根据How does new Google reCAPTCHA work? 页面和有关此验证码如何工作的已知信息,我会尝试以下操作:

    • 使用您以前使用过的预加载配置文件打开浏览器(至少有浏览历史记录)
    • 在启动测试的浏览器中登录谷歌帐户
    • 不要像普通人那样通过click()点击复选框并使用偏移量点击它
    • 玩弄浏览器操作之间的延迟

    另一点是,您不需要对验证码的工作方式进行 e2e 测试 - 它超出了应用程序端到端测试的范围。找到一种方法来为测试用户禁用/关闭验证码,或者为您将针对其运行测试的特定构建。

    【讨论】:

    • 找到一种方法为测试用户禁用/关闭验证码问题是如何做到这一点?
    • 别忘了use testing keys 允许机器人点击并通过“我不是机器人”测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多