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

Selenium Google登录块

沈曜灿
2023-03-14

我的谷歌登录有问题。我想登录我的账户,但谷歌表示,自动化驱动程序是不允许登录的。

我在寻找解决办法。有没有可能得到一个普通Firefox/Chrome的cookie并将其加载到ChromeDriver/GeckoDriver中?我认为这是一个解决方案。但我不确定这是否可能。。

寻找解决方案...

另外,我想添加一个快速解决方案。我用我的一个旧帐号解决了这个问题。这对你来说可能是一个快速的解决方案

共有3个答案

卜盛
2023-03-14

一个适合我的解决方案:https://stackoverflow.com/a/60328992/12939291或https://www.youtube.com/watch?v=HkgDRRWrZKg

短:Stackoverflow使用谷歌帐号登录,并带有重定向

from selenium import webdriver
from time import sleep

class Google:

    def __init__(self, username, password):

        self.driver = webdriver.Chrome('./chromedriver')
        self.driver.get('https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent%27')
        sleep(3)
        self.driver.find_element_by_xpath('//*[@id="openid-buttons"]/button[1]').click()
        self.driver.find_element_by_xpath('//input[@type="email"]').send_keys(username)
        self.driver.find_element_by_xpath('//*[@id="identifierNext"]').click()
        sleep(3)
        self.driver.find_element_by_xpath('//input[@type="password"]').send_keys(password)
        self.driver.find_element_by_xpath('//*[@id="passwordNext"]').click()
        sleep(2)
        self.driver.get('https://youtube.com')
        sleep(5)

username = ''
passwort = ''
Google(username, password)
江坚成
2023-03-14

此错误消息。。。

...表示WebDriver实例无法验证浏览上下文,即浏览器会话。

此错误可能由以下不同因素引起:

>

在文章较不安全的应用程序

在这些情况下,相应的解决办法是:

  • 禁用此Google帐户的双因素身份验证,并执行@Test
  • 允许不太安全的应用

由于“此浏览器或应用程序可能不安全”,您可以在“无法使用selenium automation登录谷歌”中找到详细讨论

但是,为了帮助保护您的帐户,网络浏览器可能不允许您从某些浏览器登录。谷歌可能会停止以下浏览器的登录

  • 不支持JavaScript或已关闭JavaScript

在这些情况下,有多种解决方案:

>

  • 使用支持JavaScript的浏览器:

    Safari

    火狐

    歌剧

    Internet Explorer

    边缘

    在Web浏览器中启用JavaScript:如果您使用的是受支持的浏览器,但仍然无法登录,则可能需要启用JavaScript。

    如果您仍然无法登录,可能是因为您打开了AutomationExpress/不安全/不支持的扩展,您可能需要按以下方式关闭:

      public class browserAppDemo 
      {
          public static void main(String[] args) throws Exception 
          {
              System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
              ChromeOptions options = new ChromeOptions();
              options.addArguments("start-maximized");
              options.setExperimentalOption("useAutomationExtension", false);
              options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
              WebDriver driver =  new ChromeDriver(options); 
              driver.get("https://accounts.google.com/signin")
              new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='identifierId']"))).sendKeys("gashu");
              driver.findElement(By.id("identifierNext")).click();
              new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@name='password']"))).sendKeys("gashu");
              driver.findElement(By.id("passwordNext")).click();
              System.out.println(driver.getTitle());
          }
      }
    

    你可以在以下网站上找到一些相关的讨论:

    在java中使用selenium webdriver登录Gmail

    selenium测试脚本通过新的ajax登录表单登录谷歌帐户

    最后,可能不支持某些旧的浏览器版本,因此请确保:

    • JDK升级到当前级别JDK 8u241.
    • Selenium升级到当前版本3.141.59.
    • ChromeDriver更新到当前的ChromeDriver v80.0级别。
    • Chrome更新到当前Chrome版本80.0级别。

  • 汪丁雷
    2023-03-14

    我也遇到了同样的问题,并找到了解决办法。我在用

    1) Windows 10 Pro

    2) Chrome版本83.0.4103.97(官方版本)(64位)

    3) 硒铬驱动83.0.4103.39

    一些简单的C#代码打开谷歌页面

    var options = new ChromeOptions();
    options.addArguments(@"user-data-dir=c:\Users\{username}\AppData\Local\Google\Chrome\User Data\");
    IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver();
    driver = new ChromeDriver(Directory.GetCurrentDirectory(), options);
    driver.Url = "https://accounts.google.com/";
    Console.ReadKey();
    

    这里的核心问题是,当你使用selenium驱动程序时,你不能登录,但你可以使用已经登录到google帐户的配置文件。

    您必须找到Chrome存储配置文件的位置,并将其附加到"user-data-dir"选项。

    另外,用你的真实账户名替换{username}。

    在linux上,用户配置文件位于“~/.config/google chrome”中。

     类似资料:
    • 用户登录 调用地址 https://api.bilibili.tv/login 需要 App Key;此API调用权限需要额外申请,具体请联系网站客服。 参数 字段 必选 类型 说明 userid/email true string 帐号名或邮箱 pwd true string 明文密码 captcha true string 验证码 (请访问 https://secure.bilibili.tv

    • 作用 单点登录企业app、企业app H5等 依赖 获取单点登录前,员工的账户必须已经在滴滴,可使用员工添加接口将员工加入滴滴 注意 所有接口调用时需要严格遵守请求方式(GET/POST) 使用接口前需要仔细阅读每个接口的注意事项 接口报错时先阅读[通用错误解决方案][2]和当前接口文档下的接口错误解决方案

    • 3. 登录 打开云课堂 APP,通过扫描二维码或输入讲师登录地址的方式,选择课堂模式,进入课堂登录页面,输入昵称和密码,进入课堂房间。支持识别本地相册的二维码图片。 昵称 可自定义名称,名称将会在视频窗口及聊天中显示。 课堂密码 填写房间的讲师端登录密码。 线路切换 根据所在区域,切换线路。 横竖屏设置 根据直播场景,选择横屏或者竖屏。

    • 容器在分派请求到 servlet引擎之前建立调用者身份。在整个请求处理过程中或直到应用成功的在请求上调用身份认证、登录或退出,调用者身份保持不变。对于异步请求,调用者身份建立在初始分派时,直到整个请求处理完成或直到应用成功的在请求上调用身份认证、登录或退出,调用者身份保持不变。 在处理请求时登录到一个应用,精确地对应有一个有效的非空的与请求关联的调用者身份,可以通过调用请求的 getRemoteU

    • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

    • 首先,我想让你知道,我是新来的Symfony。我在路上把我的PHP项目从我自己的“基本”MVC转到SimfOn.该项目已经运行良好,但我在适应Symfony时遇到了一些问题。 我从基本的框架开始,make: user和make: auth。模板运行良好。但是我未能将登录过程转换为AJAX和JSON。 我遵循了这个官方教程:https://symfonycasts.com/screencast/ap

    • 以下是登录Jira的步骤: 要登录Jira,请转到我们在Jira中创建的网站。出现登录页面,然后您需要填写用户名和密码等凭据。单击继续按钮。 输入密码,然后单击“登录”按钮。 如果密码不正确,则会显示验证消息“不正确的电子邮件地址或密码”。这显示在下面的屏幕截图中: 要解决上述错误,请单击“无法登录”?链接。点击链接,我们将看到如下所示的屏幕: 单击“发送恢复链接”按钮。单击“发送恢复链接”按钮后

    • 我正在尝试将我的登录名转换为reverfit2我的旧LoginActivity: 我得新LoginActivity 我使用的是androidhive的Rest Api,这段代码是我修改的,以适应我的应用程序: http://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using-php-slim-and-m