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

标签 java facebook selenium selenium-webdriver

我刚刚开始在在线类(class)中学习 Selenium webdriver。

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

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

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

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

之后,我用谷歌搜索并发现了这个SO Question 试图复制此answer在我的代码中。

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<WebElement> 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)

I am aware of index out of bound error.

我的问题是为什么 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();

关于java - 为什么 Selenium 驱动程序无法识别 Facebook 登录页面的 ID 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815835/

相关文章:

c# - 我可以使用C#创建一个Facebook应用程序吗?

java - 如何在 Selenium Java Web 驱动程序中选择以下元素?

python - 使用 pyscreenshot 截取元素屏幕截图

java - 始终从顶部开始垂直滚动条

php - (#803) 您请求的某些别名不存在 : facebook graph api

facebook - 使用 Graph API 获取用户在 Facebook 中拥有的页面列表

selenium - 在 ReportNG 中未获取 TestNG 的报告

java - 如何使用java多线程将大文本文件分割成更小的 block

java - 如何在Java中创建和显示列表?

java - 获取网页文本