使用Selenium网络驱动程序登录Gmail失败显示找不到密码的元素

问题描述

尝试将隐式等待时间设置为大约10秒。

gmail.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

或设置一个明确的等待。显式等待是您定义的代码,用于等待特定条件发生后再继续执行代码。您的情况就是密码输入字段的可见性。

WebDriverWait wait = new WebDriverWait(gmail, 10);
WebElement element = wait.until(
    ExpectedConditions.visibilityOfElementLocated(By.id("Passwd")));
gmail.findElement(By.id("Passwd")).sendKeys("xyz");

硒找不到元素的原因是因为idpassword输入字段的最初是Passwd- hidden。单击“下一步”按钮后,Google首先验证输入的电子邮件地址,然后显示密码输入字段(将ID从更改Passwd-hiddenPasswd)。因此,当密码字段仍然隐藏时(即Google仍在验证电子邮件ID),您的网络驱动程序将开始搜索IDPasswd仍然隐藏的密码输入字段。因此,将引发异常。

解决方法

public static void main(String[] args){
System.setProperty(“webdriver.chrome.driver”,”E:/softwares/chromedriver_win32/chromedriver.exe”);
WebDriver gmail= new ChromeDriver();

    gmail.get("https://www.gmail.co.in"); 
    gmail.findElement(By.id("Email")).sendKeys("abcd");
    gmail.findElement(By.id("next")).click();
    gmail.findElement(By.id("Passwd")).sendKeys("xyz");

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...