当前位置: 首页 > 知识库问答 >
问题:

自动gmail登录[在oAuth期间]被用户验证阻止

莫誉
2023-03-14

此代码用于登录gmail

public void login(User user) {
    WebDriverWait wait = new WebDriverWait(driver, 60);
    WebElement emailTextBox = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.id("identifierId")));
    emailTextBox.sendKeys(user.email);

    WebElement nextButton = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(), 'Next')]")));
    nextButton.click();

    WebElement passwordTextBox = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@type='password']")));
    passwordTextBox.sendKeys(user.password);

    nextButton = wait.until(
            ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(), 'Next')]")));
    nextButton.click();
}

问题

我们有一个Web应用程序正在测试中,用户可以使用google(oAuth2)登录,但是gmail使用用户验证(重置密码或验证码或电话号码)捕获自动化脚本。

问题:

有没有办法避免gmail用户验证?

(我不是要解决google验证挑战,在用户手动运行的普通浏览器中,此验证挑战不会被触发(大多数情况下),但在selenium中,有时会发生这种情况,并且我的测试失败。)

2018年8月19日更新

这是一条死胡同,绕过谷歌验证并非小事,在搜索更多内容后,我发现服务虚拟化是解决此问题的正确方法,可能是Hoverfly。

共有1个答案

尹辰沛
2023-03-14

使用cookie解决了我的问题

public HomePage googleAutoLogin(String cookieKey, String cookieValue) {
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.HOUR, 1);
    Date afterOneHour = cal.getTime();

    driver.manage().deleteAllCookies();

    Cookie cookie = new Cookie.Builder(cookieKey, cookieValue)
            .domain("qreflect.com")
            .path("/")
            .expiresOn(afterOneHour)
            .isHttpOnly(true)
            .build();

    driver.manage().addCookie(cookie);
    driver.navigate().refresh();
    logger.log(Level.INFO, "Finished adding cookie");

    return this;
}

您必须手动登录一次,然后检查以获取与应用程序会话相关的cookie,将它们存储在某个位置,并将密钥/值对传递给此方法才能登录。

 类似资料:
  • 我正在使用selenium来自动化Web应用程序中的邮件验证过程。我已经有了一个脚本来登录gmail并阅读帐户上收到的激活邮件。该脚本在昨天之前一直运行良好,但今天我遇到了一个问题。 如果使用selenium启动浏览器,Gmail将不允许登录。说, 您使用的浏览器谷歌无法识别,或者是我们不支持的设置方式。 我已经尝试将chrome驱动程序版本升级到76.0.0,因为我使用的是chrome版本76.

  • 截至今天,用户无法在新的配置文件中使用selenium登录到Google帐户。我发现,谷歌正在阻止这个过程(拒绝?)甚至尝试stackauth。(在升级到v90后经历过这种情况)。 这是我之前发布的使用OAuth登录Google的答案,直到最近才生效 简而言之,您将通过stackauth直接登录。 我可以绕过限制的唯一方法是禁用Secure-App-Access或添加以下给定参数。(我不喜欢这样,

  • 我正在使用hybridauth库。 Hybridauth文档说,通过存储会话数据,可以实现持久会话。 假设我在数据库中存储了用户会话数据。它包含oauth令牌、oauth刷新令牌等。。 使用oauth令牌,无需询问用户权限即可联系oauth服务器。 现在一切都好了。现在,如果用户登录到谷歌,如何准确地自动登录用户? ?

  • 本文向大家介绍Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册,包括了Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册的使用技巧和注意事项,需要的朋友参考一下 动态验证:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.对应控制器方法的html页面: ajax:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.

  • localhost:9999/uaa/oauth/authorize的浏览器响应?response_type=code&client_id=acme&redirect_uri=http://example.com找到302, 但localhost:9999/uaa/login的响应为401未授权。 我可以在添加@enableResourceServer之前获得登录令牌。我正在使用Spring bo

  • 本文向大家介绍Java用户登录验证代码,包括了Java用户登录验证代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,关键代码如下所示: 以上所述是小编给大家介绍的Java用户登录验证代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!