Java 为什么Selenium驱动程序无法识别Facebook登录页面的ID元素?
我刚开始在一个在线课程中学习SeleniumWebDriver 因为我是测试和Java编程的初学者,所以请帮助我 我试图运行自动代码,在Facebook登录页面中自动填充用户名。初始运行程序已成功输出 但在第二次尝试中,我遇到了以下错误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"} 在那之后,
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();