gpt4 book ai didi

java - 如何让 PhantomJSDriver 在 selenium 中工作?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:11 29 4
gpt4 key购买 nike

我正在尝试使用PhantomJSDriver。下面的代码适用于FirefoxDriver 但不能与 PhantomJSDriver 一起使用。错误是:

[ERROR - 2016-02-12T16:02:47.717Z] WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1455292967683 org.openqa.selenium.NoSuchElementException: Error Message => 'Unable to find element with id 'email''

是否有关于如何在 Java 中执行此操作的明确指南,或者任何人都可以使其正常登录吗?我正在努力寻找有关此主题的一些清晰度。

我假设该错误与浏览器 headless 有关,因此会弄乱路径,但我看到其他人使用类似的代码并且它适用于他们。

WebDriver driver = new PhantomJSDriver();
try {
System.out.println("Logging in to Facebook...");

driver.get("https://www.facebook.com/login");
System.out.println(driver.getTitle());

driver.findElement(By.id("email")).sendKeys("USERNAME");
driver.findElement(By.id("pass")).sendKeys("PASS");
driver.findElement(By.id("loginbutton")).click();
}
catch (Exception e) {
e.printStackTrace();
}

最佳答案

有数百个与此类似的问题,例如this one 。这个问题或多或少适用于所有浏览器,并且是测试不稳定的主要原因。

基本上,您要求驱动程序在请求页面后几乎立即(几毫秒内)查找 id="email",并且几乎肯定在页面完成加载或在 DOM 中创建该 Web 元素之前。

解决方案是等到元素准备好后再尝试向其发送键。 See these examples 。例如

System.out.println(driver.getTitle());

WebDriverWait wait = new WebDriverWait(driver, 10); // 10 secs max wait
wait.until(ExpectedConditions.presenceOfElementLocated( By.id("email") ));

driver.findElement(By.id("email")).sendKeys("USERNAME");

一旦您知道 DOM 已加载,就无需等待其他元素。

关于java - 如何让 PhantomJSDriver 在 selenium 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35367124/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com