Tôi có một dịch vụ Selenium phải đăng nhập vào tài khoản gmail của tôi như bước đầu tiên. Chức năng này đã hoạt động vài tuần trước, nhưng đột nhiên đăng nhập bắt đầu không thành công và tôi thấy Lỗi này trong trình duyệt, đã thử cả trong trình điều khiển Chrome và Firefox trong selenium -
Lỗi này xuất hiện sau khi dịch vụ selenium chèn email, mật khẩu và nhấp vào nút đăng nhập. Một lỗi tương tự cũng đã được báo cáo trong Diễn đàn hỗ trợ của Google tại đây- https://support.google.com/accounts/thread/10916318?hl=vi , Họ nói rằng "Google dường như đã giới thiệu phát hiện các công cụ tự động hóa trên luồng đăng nhập của họ!" nhưng không có giải pháp trong chủ đề này.
Một số chi tiết khác có thể hữu ích-
- Tôi không thể đăng nhập thủ công vào tài khoản Google trong các trình duyệt
được mở bởi Selenium. - Nhưng tôi có thể đăng nhập thủ công vào các tài khoản này trong ứng dụng Google Chrome.
Hãy cho tôi biết nếu bạn cần xem mã, tôi sẽ đăng nó ở đây. Cảm ơn trước!
Chỉnh sửa Thêm mã mẫu để tham khảo.
public void loginGoogleAccount(String emailId, String password) throws Exception {
ChromeOptions options = new ChromeOptions();
options.addArguments("--profile-directory=Default");
options.addArguments("--whitelisted-ips");
options.addArguments("--start-maximized");
options.addArguments("--disable-extensions");
options.addArguments("--disable-plugins-discovery");
WebDriver webDriver = new ChromeDriver(options);
webDriver.navigate().to("https://accounts.google.com");
Thread.sleep(3000);
try {
WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
email.sendKeys(emailId);
Thread.sleep(1000);
WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
emailNext.click();
Thread.sleep(1000);
WebDriverWait wait = new WebDriverWait(webDriver, 60);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));
Thread.sleep(3000);
WebElement passwordElement = webDriver.findElement(By.xpath("//input[@type='password']"));
passwordElement.sendKeys(password);
Thread.sleep(1000);
WebElement passwordNext = webDriver.findElement(By.id("passwordNext"));
passwordNext.click();
} catch (Exception e) {
LOGGER.info(String.format("No email/password field available or it is already logged in: [%s]: ",
e.getMessage()));
}
}