我想通过以下方式登录Selenium
。该过程分为2页。
现在我可以在第一页输入密钥。然后我应该进入下一页(输入密码并单击提交密钥)。
但是,如果我只在一个类中添加4个按键代码,则无法完成第二页按键输入(密码和提交)
我猜想第一页按键输入和第二页按键输入之间缺少一些代码。
public class Selenium {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
WebDriver driver;
System.setProperty("webdriver.gecko.driver", "C:\\Users\\Downloads\\geckodriver-v0.10.0-win64\\wires.exe");
driver =new FirefoxDriver();
driver.get("https://mail.google.com");
driver.findElement(By.id("Email")).sendKeys("yourEmailId");//first page
driver.findElement(By.id("next")).click();//first page
driver.findElement(By.id("Passwd")).sendKeys("yourPassword");//next page
driver.findElement(By.id("signIn")).click();//next page
}
driver.get("https://mail.google.com");
driver.findElement(By.id("Email")).sendKeys("yourEmailId");//first page
driver.findElement(By.id("next")).click();//first page
/* What code should I add here? */
driver.findElement(By.id("Passwd")).sendKeys("yourPassword");//next page
driver.findElement(By.id("signIn")).click();//next page
}
尝试在查找此元素之前设置隐式等待(可能为 10 秒):-
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("Passwd")).sendKeys("yourPassword");
driver.findElement(By.id("signIn")).click();
或者设置显式等待。显式等待是您定义的代码,用于等待特定条件发生,然后再继续处理代码。在您的情况下,它是密码输入字段的可见性。
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Passwd")));
element.sendKeys("yourPassword");
//Now click on sign in button
driver.findElement(By.id("signIn")).click();//next page
解释:硒找不到该元素的原因是因为id
密码输入字段的初始值为Passwd-hidden
。单击“下一步”按钮后,Google 首先验证输入的电子邮件地址,然后显示密码输入字段(通过将 ID 从Passwd-hidden
to Passwd
)。因此,当密码字段仍然隐藏时(即 Google 仍在验证电子邮件 ID),您的网络驱动程序开始搜索带有 id 的密码输入字段Passwd
这仍然是隐藏的。因此,您应该等到它变得可见。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)