Java Intellij中硒和铬的问题
我添加了selenium jar文件,一切似乎都很好。当我运行程序时,我得到了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.
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项目:
- 现在,您应该能够创建您的测试了。因此,在
文件夹中创建新的java类,例如FirstTest.javasrc/test/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
然后,将所有
.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();