java - 如何使用 Selenium WebDriver 处理 'Log in with Google' 弹出窗口

标签 java selenium selenium-webdriver webdriver

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

Facebook 注册码:

  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);     

谷歌登录:

  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);

最佳答案

您的代码是正确的,只需在点击“使用 Google 登录”按钮后添加等待即可。

您还可以使用下面的代码

    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 

关于java - 如何使用 Selenium WebDriver 处理 'Log in with Google' 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49624260/

相关文章:

java - 从 Netbeans 构建时自动签署 JAR

java - 如何在一行中获取由 ArrayList<Object> 的 .toString() 调用组成的 String[]

python - 无法在下拉列表中向下导航,使用 Python 在 Selenium webdriver 中使用 keys.ARROW_DOWN

selenium-webdriver - 不允许的复合类名称错误Webdriver

javascript - 如何使用 selenium python 从动态网站检索所有链接

javax.ws.rs.NotSupportedException : Could not find message body reader for type: class

java - Richfaces日历 "ü"(&#252)字符问题

Python Selenium 显式等待

javascript - 隐藏元素 Selenium IDE

java - Selenium 获取当前打开的弹出窗口和弹出窗口链接