我正在尝试使用Selenium和ChromeDriver
登录到Web应用程序。我能够正确填写电子邮件和密码字段,但是每次单击登录时,都需要输入发送到我的电子邮件的新验证码。
如果我正常使用Chrome登录,它将跳过此步骤。有没有一种方法可以使用Selenium打开Chrome,以便记住我的用户名和密码?
到目前为止,这是我的代码:
String baseUrl = "https://www.easports.com/fifa/ultimate-team/web-app/";
driver.get(baseUrl);
driver.manage().window().fullscreen();
Thread.sleep(10000);
WebElement login = driver.findElement(By.xpath("//*[@id='Login']/div/div/div[1]/div/button"));
login.click();
Thread.sleep(2000);
WebElement email = driver.findElement(By.xpath("//*[@id=\'email\']"));
email.sendKeys("******@hotmail.com");
Thread.sleep(1000);
WebElement password = driver.findElement(By.xpath("//*[@id='password']"));
password.sendKeys("*******");
WebElement loginButton = driver.findElement(By.xpath("//*[@id='btnLogin']/span"));
loginButton.click();
Thread.sleep(10000);
最佳答案
Selenium使用临时浏览器配置文件。如果要使用现有配置文件,则需要在驱动程序打开浏览器之前指定它。 Chrome的示例:
public class WebdriverSetup {
public static String chromedriverPath = "C:\\Users\\pburgr\\Desktop\\selenium-tests\\GCH_driver\\chromedriver.exe";
// my default profile folder
public static String chromeProfilePath = "C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data";
public static WebDriver driver;
public static WebDriver startChromeWithCustomProfile() {
System.setProperty("webdriver.chrome.driver", chromedriverPath);
ChromeOptions options = new ChromeOptions();
// loading Chrome with my existing profile instead of a temporary profile
options.addArguments("user-data-dir=" + chromeProfilePath);
driver = new ChromeDriver(options);
driver.manage().window().maximize();
return driver;
}
public static void shutdownChrome() {
driver.close();
driver.quit();
}
}
对于Firefox:
@BeforeClass
public static void setUpClass() {
FirefoxOptions options = new FirefoxOptions();
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile selenium_profile = allProfiles.getProfile("selenium_profile");
options.setProfile(selenium_profile);
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "C:\\Users\\pburgr\\Desktop\\geckodriver-v0.20.0-win64\\geckodriver.exe");
driver = new FirefoxDriver(options);
driver.manage().window().maximize();
}
在我的情况下,selenium_profile是自定义的Firefox配置文件(不要求下载文件,不要求用户证书等)。
关于java - Selenium Chromedriver-正常打开Chrome,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50562675/