Java Selenium无法登录GMail

时间:2019-07-05 19:36:15

标签: java selenium

我正在用Java学习Selenium。我的用例是:

  1. 浏览www.Google.com
  2. 搜索“ Gmail登录名”
  3. 打开第一个链接
  4. 单击登录按钮(需要我进入登录页面)
  5. 输入电子邮件,单击下一步,然后输入密码
  6. 单击下一步

有两种情况,one当我直接浏览gmail login pageskip (1,2,3 points )时对我有用。我可以登录,但从第一步开始时会用2nd登录

Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: timeout在第5点(需要输入电子邮件时)

这是我的总体代码:

  WebDriver web;
    public void invokeChrome()
    {
            System.setProperty("webdriver.chrome.driver", "D:\\software testing\\chromedriver.exe");
            web = new ChromeDriver();
            web.manage().window().maximize();
            web.manage().deleteAllCookies();
            web.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            web.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
            web.get("https://www.google.com");

    }
 void searchQuery() throws InterruptedException
   {
       web.findElement(By.name("q")).sendKeys("Gmail Login");
       Thread.sleep(2000);
       web.findElement(By.xpath("//div[@class='sbl1']")).click();

       web.findElement(By.xpath("//h3[@class='LC20lb']")).click();
       web.findElement(By.linkText("Sign in")).click();
       Thread.sleep(2000);
       web.findElement(By.xpath("//input[@type='email']")).sendKeys("xyz@gmail.com");
       web.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();
       web.findElement(By.cssSelector(".A3sRAb.YKooDc .zHQkBf, .A3sRAb.YKooDc .MQL3Ob")).sendKeys("*****@");
       Thread.sleep(2000);
       web.findElement(By.xpath("//span[contains(text(), 'Next')]")).click();

   }

我正在使用Chromedrive 74和硒:3.9.0版本

1 个答案:

答案 0 :(得分:1)

我自己想出了解决方案。尽管这可能会在将来对某人有所帮助。好的,问题是

   <a href="SIGN IN Page" target="_blank">

由于新标签页打开,Webdriver需要将控制权从旧标签页转移到新标签页。像这样:

   WebElement link =   web.findElement(By.linkText("Sign in"));
   String l = link.getAttribute("href");
   web.get(l);