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

登录gmail帐户失败(selenium automation)

秋向阳
2023-03-14

我有一个硒服务,必须登录到我的gmail帐户作为第一步。这个功能几周前还在工作,但突然登录开始失败,我在浏览器中看到这个错误,在硒Chrome和Firefox驱动程序中都尝试过-

3601fa07f6.png" width="100%" height="100%" />

此错误发生在selenium服务插入电子邮件、密码并单击登录按钮之后。谷歌支持论坛也报告了类似的错误:https://support.google.com/accounts/thread/10916318?hl=en他们说,“谷歌似乎已经在他们的登录流中引入了自动检测工具!”但在这个问题上没有解决方案。

一些其他可能有用的细节-

  • 我无法在Selenium打开的浏览器中手动登录Google帐户

如果你需要看一下代码,请告诉我,我会把它贴在这里。谢谢!

编辑添加要引用的示例代码。

public void loginGoogleAccount(String emailId, String password) throws Exception {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--profile-directory=Default");
    options.addArguments("--whitelisted-ips");
    options.addArguments("--start-maximized");
    options.addArguments("--disable-extensions");
    options.addArguments("--disable-plugins-discovery");
    WebDriver webDriver = new ChromeDriver(options);
    webDriver.navigate().to("https://accounts.google.com");
    Thread.sleep(3000);
    try {
        WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
        email.sendKeys(emailId);
        Thread.sleep(1000);

        WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
        emailNext.click();
        Thread.sleep(1000);

        WebDriverWait wait = new WebDriverWait(webDriver, 60);
        wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));

        Thread.sleep(3000);
        WebElement passwordElement = webDriver.findElement(By.xpath("//input[@type='password']"));
        passwordElement.sendKeys(password);

        Thread.sleep(1000);
        WebElement passwordNext = webDriver.findElement(By.id("passwordNext"));
        passwordNext.click();

    } catch (Exception e) {
        LOGGER.info(String.format("No email/password field available or it is already logged in: [%s]: ",
                e.getMessage()));
    }
}

共有3个答案

燕和同
2023-03-14

这个问题是因为硒铬的特性。创建一个新的chrome配置文件,并使用您面临问题的电子邮件id登录。然后打开同步。

有了这个chrome配置文件,我可以跳过登录步骤,直接执行主过程。使用:Chrome选项添加新创建的chrome配置文件作为参数。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("Binary path of the Chrome");

希望这个能帮助你。

通令
2023-03-14

经过几个小时的反复试验,我尝试了一些对我有效的方法。

args:['--disable web security'、'--user data dir'、'--allow running unsecurity content']添加到我的配置中解决了这个问题。

后来我意识到,这并没有帮到我,因为我尝试了另一封电子邮件,但没有成功。经过一些观察,我发现了一些其他的东西,这已经被尝试和测试过了。

使用自动化:

去https://stackoverflow.com/users/login选择“使用谷歌策略登录”,输入谷歌用户名和密码登录以转到https://gmail.com(或任何你想访问的谷歌应用)

在坚持一整天(大约24小时)之后,尝试直接自动登录gmail(或任何你想访问的谷歌应用程序)。。。我至少有另外两个人成功地做到了这一点。PS-您可能希望继续stackoverflow登录,直到您至少收到验证码请求,因为我们也都经历了这一阶段。

宣胜
2023-03-14

切换“允许更少的安全应用程序访问”
您可以切换帐户上的一个设置,这可能会有所帮助。它是“允许更少的安全应用程序访问”。如果您已经登录到您想要修改的gmail帐户,您应该能够访问下面的链接来切换该设置。

更改谷歌账户设置的链接:https://myaccount.google.com/lesssecureapps

进一步资料(来源):https://support.google.com/accounts/answer/6010255

 类似资料:
  • 我知道很多人都问过类似的问题,但我想知道如何使用python登录gmail(或google帐户)。我已经有了一个代码(见下文),可以使用selenium将用户登录到gmail。然而,我注意到了一些问题。 程序停止/关闭时浏览器关闭。 它无法检测到失败的登录。 这两个问题都需要解决,我才能完成我的项目。我不介意使用像pyautogui这样的selenium以外的东西来打开google。但是,它需要能

  • 问题内容: 我无法摆脱这个错误。我已经通过SSMS添加了“ NT AUTHORITY \ NETWORK”用户以及使用此线程作为参考的相关角色:用户“ NT AUTHORITY \ NETWORKSERVICE”的登录失败 我试图通过Windows服务建立数据库连接。在调试模式下,数据库连接可以正常工作。当我实际尝试运行已安装的服务时,便会出现此错误。 这是我来自app.config的连接字符串:

  • 我正在寻求登录gmail帐户并使用python脚本下载一些电子邮件的帮助。我正在尝试采用这里找到的方法,但我在步骤1中遇到了一个问题,即通过imap访问帐户。 下面是我要开始的代码: 我得到以下错误: 在gmail设置中确实启用了Imap。我已经查看了google支持链接上的说明,以及类似情况下有关此错误的问题,例如这里和这里,但我的情况与第一次不同,因为1)它从一开始就不起作用,2)我没有经常运

  • 问题内容: 我正在寻求一些帮助,以登录gmail帐户并使用python脚本下载一些电子邮件。我正在尝试采用此处找到的方法,但是我遇到了第1步的问题,即通过imap访问帐户。 这是我开始的代码: 我收到以下错误: 在gmail设置中确实启用了Imap。我已经查看了Google支持链接上的说明以及在类似情况下有关此错误的问题,但是我的情况与第一种情况有所不同,因为 1)从一开始它就没有用, 2)我是不

  • 一、检查服务器是否填写了DNS,即服务器是否能上网访问www.phpcms.cn。有部分用户是本机通信失败,检查C:\WINDOWS\system32\drivers\etc\hosts文件,如果用的是localhost域名访问,本机是否绑定了127.0.0.1 localhost 二、检查phpsso的访问地址是否正确,然后查看设置->phpsso设置中的应用id、接口地址、加密密钥、版本号和

  • 这是一个PHP代码片段,来自我正在全局转换为PDO的项目。这就是功能。登录页面的php文件。显然,它没有完全转换为PDO,所以不要批评它,但基本上是在登录中。php文件我让它访问这个方法,并从表单中传递数据库(在中是必需的)、用户名和密码。我设置了一个基本查询,以查找使用表单用户名输入的所有用户。然后我准备并执行查询。然后,我需要一个行计数,因此我在查询上设置了一个$rowcount变量,运行ro