Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 Intellij中硒和铬的问题_Java_Selenium_Intellij Idea_Selenium Chromedriver - Fatal编程技术网

Java Intellij中硒和铬的问题

Java Intellij中硒和铬的问题,java,selenium,intellij-idea,selenium-chromedriver,Java,Selenium,Intellij Idea,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.

我添加了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
线程“main”java.lang.NoClassDefFoundError中出现异常:com/google/common/collect/ImmutableMap 位于org.openqa.selenium.remote.service.DriverService$Builder(DriverService.java:259) 位于org.openqa.selenium.chrome.ChromeDriverService$Builder(ChromeDriverService.java:101) 位于org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94) 位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:123) 在sneakerbot.Main.Main(Main.java:20) 原因:java.lang.ClassNotFoundException:com.google.common.collect.ImmutableMap 位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) 位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 还有5个
请帮帮我。我对硒的使用感到困惑和陌生。我在mac电脑上,我很确定一切都是最新的。

这是将Selenium与Java结合使用的最简单的代码(在Intellyj中工作)。看看firefox驱动程序路径“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>
希望此代码有助于启动一个新项目。如果您对Selenium不熟悉,并且熟悉python,我建议您使用python,但这是个人的选择


干杯

您肯定应该首先使用任何现代构建工具(如或)来设置项目。当然,可以通过下载jar并将其附加到项目来手动添加每个依赖项。然而,这是一种非常不方便和复杂的方式。构建工具将为您管理依赖关系,并运行测试和创建报告

您可以使用Maven,正如@nugbe已经建议的那样。就我个人而言,我更喜欢格拉德尔

以下是一个简单明了的解决方案:

  • 在IDEA中创建新的Gradle项目,有关详细信息,请参阅。您应该获得一个用于测试的项目框架
  • 现在,是时候考虑你的依赖关系了。常见java库的主要来源是。打开它,搜索Selenium,然后在结果中选择SeleniumJava,然后单击所需的版本(是最新且稳定的版本)。在其页面上,查找Gradle选项卡,单击它并复制工件URI:
    编译组:'org.seleniumhq.selenium',名称:'seleniumjava',版本:'3.141.59'
  • 接下来,打开
    build.gradle
    文件,查找
    依赖项{…}
    部分并粘贴依赖项
  • 顺便说一句,您还可以使用协调浏览器驱动程序。将此依赖项添加到项目中,只需两行代码即可直接从代码中获取实际驱动程序:
  • 添加所有所需的依赖项后,更新Gradle项目:单击主窗口右侧的Gradle图标,然后单击重新导入所有Gradle项目:

  • 现在,您应该能够创建您的测试了。因此,在
    src/test/java
    文件夹中创建新的java类,例如FirstTest.java
import io.github.bonigarcia.wdm.WebDriverManager;
导入org.junit.AfterClass;
导入org.junit.BeforeClass;
导入org.junit.Test;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
公开课第一次考试{
专用静态色度驱动器;
@课前
公共静态void init(){
WebDriverManager.chromedriver().setup();
驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
}
@下课
公共静态void拆卸(){
driver.close();
}
@试验
公共测试(){
驱动程序。获取(“https://www.google.com");
WebElement searchBox=driver.findElement(By.name(“q”);
searchBox.clear();
searchBox.sendKeys(“硒”);
searchBox.submit();
}
}
  • 最后,您可以运行测试。您可以单击IDEA编辑器中测试方法名称旁边的绿色三角形,也可以打开终端(查看IDEA窗口的底部)并键入:
    gradle clean test
    ,然后开始

您可以创建一个新的Selenium项目,不用担心,也可以创建一个简单的Java程序

Selenium所需的库位于其上,请转到Java并按。

然后,将所有
.jar
文件(它们在根文件夹中是7:2,在
libs
文件夹中是5)放在项目的另一个文件夹中。
完成后,转到文件项目结构…新建项目库Java→ 选择带有7个libs的文件夹,就完成了

在您的例子中,在MacOS上,您不必指定.exe扩展名。这在Windows中仅需要

为此,您必须写下:

System.setProperty(“webdriver.chrome.driver”、“drivers/chromedriver”);
(我将所有驱动程序放在项目中的文件夹“drivers”中,与文件夹“src”处于同一级别。)


就这些。

干杯。

您的项目似乎缺少了对番石榴的依赖
ImmutableMap
是这个Google集合库的一部分。你需要明确地添加它。你能告诉我怎么做吗??在过去的3个小时里,我一直在想这个问题。我不明白为什么一开始就没有。请帮助。您在项目中使用什么构建工具?专家Gradle?我只是在Intellij中使用一个标准Java模板。我没有使用Madle或Gradle。这是唯一可行的方法吗?不,您可以在IDEA中手动添加Guava jar,只需从Maven Repository中获取一个即可:不过,使用构建工具可以进行管理
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());
    }
}
     WebDriverManager.chromedriver().setup();
     ChromeDriver driver = new ChromeDriver();