在java中使用SeleniumWebDriver登录Gmail

在java中使用SeleniumWebDriver登录Gmail,java,selenium,firefox,geckodriver,webdriverwait,Java,Selenium,Firefox,Geckodriver,Webdriverwait,在邮件id之后,我的密码也被写入id框选项&服务器重定向到下一个密码页。我想问一下我会怎么做,这样我的密码只会在密码页面中输入。这里是通过一组有效的凭证登录到你的Gmail帐户的工作代码块- import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import o

在邮件id之后,我的密码也被写入id框选项&服务器重定向到下一个密码页。我想问一下我会怎么做,这样我的密码只会在密码页面中输入。

这里是通过一组有效的凭证登录到你的Gmail帐户的工作代码块-

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class NewGmail {
    public static void main(String[] args) {
            WebDriver driver = new FirefoxDriver();
            driver.manage().window().maximize();
            String url = "https://accounts.google.com/signin";
            driver.get(url);
            driver.findElement(By.id("identifierId")).sendKeys("cp8805"); 
            //driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);      
            WebDriverWait wait=new WebDriverWait(driver, 20);               
            driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();         
            driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);        
            driver.findElement(By.xpath("//input[@class='whsOnd zHQkBf']")).sendKeys("xxxxxx");             
            driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click(); 
    }  
}
更新5-1-2020 优化上述代码块并添加两个可以使用的参数:

System.setProperty("webdriver.gecko.driver","C:\\your_directory\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("your_email_phone");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password));
password.sendKeys("your_password");
driver.findElement(By.id("passwordNext")).click();

下面是通过一组有效的凭证登录您的Gmail帐户的工作代码块-

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class NewGmail {
    public static void main(String[] args) {
            WebDriver driver = new FirefoxDriver();
            driver.manage().window().maximize();
            String url = "https://accounts.google.com/signin";
            driver.get(url);
            driver.findElement(By.id("identifierId")).sendKeys("cp8805"); 
            //driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);      
            WebDriverWait wait=new WebDriverWait(driver, 20);               
            driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();         
            driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);        
            driver.findElement(By.xpath("//input[@class='whsOnd zHQkBf']")).sendKeys("xxxxxx");             
            driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click(); 
    }  
}
更新5-1-2020 优化上述代码块并添加两个可以使用的参数:

System.setProperty("webdriver.gecko.driver","C:\\your_directory\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("your_email_phone");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password));
password.sendKeys("your_password");
driver.findElement(By.id("passwordNext")).click();

如何使用Firefox登录?感谢分享@DebanjanB脚本的详细信息。但是,在输入Gmail电子邮件id后,如果出现错误,您将无法登录,我们有将otp发送到Gmail的功能,因此需要登录并阅读电子邮件才能获得otp。虽然上面添加了Chromeoptions参数,但facing无法在问题中为您签名。请引导。同样的问题。Gmail阻止web驱动程序。有什么解决方法吗?到目前为止有什么更新吗?如何使用Firefox登录?感谢分享@DebanjanB脚本的详细信息。但是,在输入Gmail电子邮件id后,如果出现错误,您将无法登录,我们有将otp发送到Gmail的功能,因此需要登录并阅读电子邮件才能获得otp。虽然上面添加了Chromeoptions参数,但facing无法在问题中为您签名。请引导。同样的问题。Gmail阻止web驱动程序。有解决方法吗?到目前为止有更新吗?