我想先打开google.com然后输入“selenium testing”。
我只想使用eclipse使用className
webdriver但我收到以下错误。
Exception in thread "main"
org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"class name","selector":"Tg7LZd"}
Command duration or timeout: 37 milliseconds
这是我的代码:
package coreJava;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Training1 {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.findElement(By.className("gLFyf")).sendKeys("selenium testing");
driver.findElement(By.className("Tg7LZd")).click();
}
}
我该如何解决?
此错误消息...
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"class name","selector":"Tg7LZd"}
...暗示GeckoDriver无法根据您使用的Locator Strategy找到任何元素。
您的主要问题是您使用的classNames基于JavaScript并且是动态生成的,我们在生成它们之前无法猜测。作为替代方案,您可以使用以下解决方案:
package coreJava;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Training1 {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement myElement = driver.findElement(By.name("q"));
myElement.sendKeys("selenium testing");
myElement.submit();
}
}
System.setProperty("webdriver.gecko.driver", "geckodriver");
FirefoxDriver driver = new FirefoxDriver();
driver.get("https://google.com");
Thread.sleep(3);
driver.findElement(By.className("gsfi")).sendKeys("selenium testing");
Thread.sleep(3);
driver.findElement(By.className("sbqs_c")).click();
Thread.sleep(3);
driver.close();
这是工作代码
。这些将打开谷歌浏览器,然后在搜索框中写“selenium testing”,然后使用该类搜索它。