首页 > 解决方案 > Intellij 中 Selenium 和 ChromeDriver 的问题

问题描述

我已经添加了 selenium jar 文件,一切似乎都很好。当我运行程序时,我得到

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
    at org.openqa.selenium.remote.service.DriverService$Builder.<init>(DriverService.java:259)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.<init>(ChromeDriverService.java:101)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
    at sneakerbot.Main.main(Main.java:20)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableMap
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

请帮我。我被困住并且不熟悉使用硒。我在 Mac 上,我很确定一切都是最新的。

标签: javaseleniumintellij-ideaselenium-chromedriver

解决方案


这是在 Java 中使用 Selenium 的最简单的代码(在 Intellyj 中工作)。看看火狐驱动路径“geckodriver”。

首先,您需要创建一个新的 maven 项目并将这个 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>eus.ehu.selenium.tutorial</groupId>
  <artifactId>TestingIzapide</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
            <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13</version>
          <scope>test</scope>
        </dependency>
    </dependencies>
</project>

接下来使用以下代码创建一个 Java 类:

import static org.junit.Assert.assertEquals;
import java.util.concurrent.TimeUnit;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.logging.Logger;

public class GoogleSearchTest {
    private WebDriver driver;
    private static final Logger LOGGER = Logger.getLogger(GoogleSearchTest.class.getName());

    @Before
    public void setUp() {
        System.setProperty("webdriver.gecko.driver", "./src/test/resources/firefoxdriver/geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("https://www.google.com");
    }

    @Test
    public void testGooglePage() {
        String searchWord="Hello world";
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.clear();
        searchBox.sendKeys(searchWord);
        searchBox.submit();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        LOGGER.info("Alert: TITLE: "+ driver.getTitle());
        assertEquals("Google", driver.getTitle());
        LOGGER.info("Alert: TITLE: "+ driver.getTitle());
    }
}

希望这段代码有助于开始一个新项目。如果您是 Selenium 的新手并且熟悉 python,我建议您使用 Python,但这是个人选择...

干杯


推荐阅读