如何使用 Selenium WebDriver 处理“使用 Google 登录"弹出窗口 [英] How to handle 'Log in with Google' popup window using Selenium WebDriver

查看:41
本文介绍了如何使用 Selenium WebDriver 处理“使用 Google 登录"弹出窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有一段代码可以在 fblogin 弹出窗口上工作,但同一段代码在 googlelogin 弹出窗口上不起作用.我不知道为什么.网站 = https://accounts.trivago.com/login#

So i have a piece of code which works on fblogin pop-up window but the same piece of code doesn't work on googlelogin popup window. I dont know why. Website = https://accounts.trivago.com/login#

脸书注册码:

  driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[1]")).click();
  String parentWindow = driver.getWindowHandle();     
  System.out.println("Parent Window ID is : " + parentWindow);

  Set<String> allWindow = driver.getWindowHandles();

  int count = allWindow.size();
  System.out.println("Total Window : " + count);

  for(String child:allWindow)
  {
      if(!parentWindow.equalsIgnoreCase(child))
      {
          driver.switchTo().window(child);
          driver.manage().window().maximize();
          driver.findElement(By.id("email")).sendKeys("");
          driver.findElement(By.id("pass")).sendKeys("");
          driver.findElement(By.id("u_0_0")).click();
          Thread.sleep(7000);
      }
  }
  driver.switchTo().window(parentWindow);     

Google 登录:

  driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[2]")).click();
  String parentWindow = driver.getWindowHandle();     
  System.out.println("Parent Window ID is : " + parentWindow);

  Set<String> allWindow = driver.getWindowHandles();

  int count = allWindow.size();
  System.out.println("Total Window : " + count);

  for(String child:allWindow)
  {
      if(!parentWindow.equalsIgnoreCase(child))
      { 
          driver.switchTo().window(child);
          driver.manage().window().maximize();
          Thread.sleep(7000);
      }
  }
  driver.switchTo().window(parentWindow);

推荐答案

您的代码是正确的,只需点击Log in with Google"按钮后添加等待即可.

Your code is correct , only need to add wait after click on "Log in with Google" button.

您也可以使用以下代码

    public void LoginGoogle() throws InterruptedException
    {
    driver.get("https://accounts.trivago.com/login#");
    driver.findElement(By.xpath(".//*[@id='authentication-login']/div/section[1]/div[3]/div/button[2]")).click();   

    Thread.sleep(5000);

    String parentWindow = driver.getWindowHandle();     
    System.out.println("Parent Window ID is : " + parentWindow);
    for(String winHandle : driver.getWindowHandles())
    {
        driver.switchTo().window(winHandle);
        System.out.println(driver.getTitle());
        driver.manage().window().maximize();
    }
     WAIT.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='identifierId']")));
     driver.findElement(By.xpath("//input[@id='identifierId']")).sendKeys(emailid);
//Continue 

这篇关于如何使用 Selenium WebDriver 处理“使用 Google 登录"弹出窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆