Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Selenium驱动程序无法识别Facebook登录页面的ID元素?_Java_Facebook_Selenium_Selenium Webdriver - Fatal编程技术网

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

Java 为什么Selenium驱动程序无法识别Facebook登录页面的ID元素?,java,facebook,selenium,selenium-webdriver,Java,Facebook,Selenium,Selenium Webdriver,我刚开始在一个在线课程中学习SeleniumWebDriver 因为我是测试和Java编程的初学者,所以请帮助我 我试图运行自动代码,在Facebook登录页面中自动填充用户名。初始运行程序已成功输出 但在第二次尝试中,我遇到了以下错误 org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"email"} 在那之后,

我刚开始在一个在线课程中学习SeleniumWebDriver

因为我是测试和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<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");
        }
   }
}

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


你们能帮我解决这个问题吗。

你们的代码有一些逻辑错误。我试着用你的代码来解决逻辑错误,在我的电脑上一次又一次地运行良好

更新你的代码如下

driver.get("http://www.facebook.com");  


List<WebElement> 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");
 }
driver.get(“http://www.facebook.com");  
列表元素=driver.findElements(By.id(“email”);
if(elements.size()>0)//
{
System.out.println(elements.get(0.getText());
元素。获取(0)。发送键(“username@gmail.com");
System.out.println(“用户名成功输入”);
}

要登录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();

你可以试着在开车后睡觉。也许有一些JS正在创建您正在寻找的输入。该元素似乎直接存在于页面的源代码中,但当检测到JS时,它可能会被删除并由facebook的前端代码重新创建。facebook不允许你刮取它们,所以不要这样做。使用API。@antoineMoPa我试过你的建议,很抱歉它对我不起作用。谢谢you@WizKid我是初学者,所以请详细解释我。不要使用硒。使用API。关于API的文档可以在developers.facebook.com/docsthank上找到。感谢您,它工作正常,没有任何错误。但是为什么我不能使用ID元素。@Srini我们利用css来模拟DOM
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();