为什么Selenium驱动程序无法识别Facebook登录页面的ID元素?

我刚刚开始在线课程学习Selenium webdriver。

由于我是测试和Java编程的初学者,所以请帮助我。

我试图运行自动化代码以在Facebook登录页面中自动填充用户名。 初始运行程序已成功输出。

但在第二次尝试时,我遇到了以下错误

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"email"} 

之后,我用谷歌搜索并发现这个问题试图在我的代码中复制这个答案 。

 public class Helloworld { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","C:\\Seenu\\Selenium\\Driver" +"\\Chromedriver\\chromedriver.exe"); WebDriver drive = new ChromeDriver(); drive.get("https://www.facebook.com"); // part copied from other SO question //Copied code starts here with little modification List elements = drive.findElements(By.id("email")); if(elements.size() > 0) { System.out.println(elements.get(0).getText()); } //Copied code ends here. else { elements.get(0).sendKeys("username@gmail.com"); System.out.println("Username successfully entered"); } } } 

但是,我得到以下错误。

 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at Basic.Helloworld.main(Helloworld.java:40) 

我知道索引出界错误。

我的问题是为什么Selenium驱动程序无法识别Facebook登录页面的id元素

你们可以请我解决这个问题。

要登录Facebook您可以使用以下代码块:

 System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.facebook.com/"); driver.findElement(By.cssSelector("input#email")).sendKeys("Selenium"); driver.findElement(By.cssSelector("input[name='pass']")).sendKeys("Automation"); driver.findElement(By.cssSelector("input[value='Log In']")).click(); 

您的代码有一些逻辑错误。 我尝试用你的代码解决逻辑错误在我的电脑中一次又一次地工作正常。

更新您的代码如下

 driver.get("http://www.facebook.com"); List elements = driver.findElements(By.id("email")); if(elements.size() > 0)// { System.out.println(elements.get(0).getText()); elements.get(0).sendKeys("username@gmail.com"); System.out.println("Username successfully entered"); }