我开发了硒代码:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import java.util.List;
public class TestDemoQA {
public static void main(String[] args) throws InterruptedException{
System.setProperty("webdriver.edge.driver", "C:\\Users\\Suganthan\\Downloads\\MicrosoftWebDriver.exe");
WebDriver driver = new EdgeDriver();
driver.get("http://demoqa.com/");
driver.manage().window().maximize();`
我收到的错误是:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)
我正在尝试通过升级番石榴21.0根据This Solution解决此问题。但我仍然收到此错误。有人可以提供解决方案吗?
答案 0 :(得分:2)
最后,我找到了解决方案。这是简单的家伙。在您的项目中添加最新的番石榴罐。注意:如果您已经有一个旧的罐子(请删除并添加新的罐子)。跟随链接:mvnrepository.com/artifact/com.google.guava/guava/29.0-jre
答案 1 :(得分:1)
此错误消息...
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)
...表示 JVM 无法启动/生成程序。
@GhostCat指出,您的主要问题是 guava 版本与您使用的其他二进制版本之间的不兼容性。
@Test
。答案 2 :(得分:1)
请注意,您要从罐子列表中删除旧的番石榴,然后再用新的番石榴替换
答案 3 :(得分:0)
我有点明白这是什么了。所以我使用 TestNG 添加到我的项目类路径中。
当我传统上保留如下所示的 Selenium Jars 时,它抛出了问题中所述的错误。
现在,如果您在将 selenium jars 更新到最新版本后仍然收到错误消息,那么这就是 TestNG jars 内部的问题。如果您仔细导航到 testng jars 文件夹,您会看到 guava 已经存在(在大多数情况下有一些过时的版本)。只需删除那个。
就我而言,我的 selenium jars 文件夹(版本 30 或其他版本)中有最新的 guava jar,但在我的 TestNG 文件夹中,我有大约 19 个版本的 guava jar——从而给 jvm 造成了混乱。
简而言之,在下载了更新的 jar 但仍然出现此类错误的情况下,这主要是某种模棱两可的情况。