我正在自动化https://www.zoho.com/login.html。此页面在框架内有登录部分。当我切换不同的框架并搜索我的电子邮件/电话字段(登录部分)时,我可以找到它,然后使用工作块(下面)但不能使用类似的代码(也在下面)两个块之间的唯一区别是我如何识别我的 userNameInputBox 元素。
//这是工作
List<WebElement> iframeElements = driver.findElements(By.tagName("iframe"));
int nFrames = iframeElements.size();
//Switching frame to go to login frame
for (int i=0; i<=nFrames ; i++) {
System.out.println("nFrames: " +nFrames);
driver.switchTo().frame(i);
if (driver.findElement(By.name("lid")).isDisplayed()){
driver.findElement(By.name("lid")).sendKeys("myuserName1");
}}
但是,如果我使用它(下面的代码)它不起作用,而是在我将我的用户名输入到用户名字段的行中给我 NullPointerException。
///这不起作用
//Elements
@FindBy(name="lid")
WebElement userNameInput;
//Switching frame to go to login frame
for (int i=0; i<=nFrames ; i++) {
System.out.println("nFrames: " +nFrames);
driver.switchTo().frame(i);
if (driver.findElement(By.name("lid")).isDisplayed()){
userNameInput.click(); //clicking the inputBox
userNameInput.sendKeys("myuserName"); //Sendingkeys into
}}
有人可以解释这种异常的原因是什么吗?或者指出我错过了什么?我想为 WebElement 使用 @FindBy。