【问题标题】:Unable to open Browser in Selenium无法在 Selenium 中打开浏览器
【发布时间】:2018-02-01 00:34:16
【问题描述】:

我在 selenium 中运行简单的代码,它会抛出以下异常:-

@Test
public void test(){

System.setProperty("webdriver.chrome.driver", "geckodriver.exe");   
WebDriver driver=new FirefoxDriver();
driver.get("https://google.com");
driver.manage().window().maximize();
}

执行脚本时显示以下错误:

以前它可以工作,我的 firefox 版本是 55,我使用的是最新的 gecko 驱动程序版本。请帮忙!!

例外情况是:- java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V 在 org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:136) 在 org.openqa.selenium.firefox.GeckoDriverService.access$000(GeckoDriverService.java:41) 在 org.openqa.selenium.firefox.GeckoDriverService$Builder.usingFirefoxBinary(GeckoDriverService.java:108) 在 org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:204) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:103) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:99) 在 newTab.Tab.test(Tab.java:16) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:645) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 在 org.testng.TestRunner.privateRun(TestRunner.java:756) 在 org.testng.TestRunner.run(TestRunner.java:610) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:387) 在 org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) 在 org.testng.SuiteRunner.run(SuiteRunner.java:289) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1293) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1218) 在 org.testng.TestNG.runSuites(TestNG.java:1133) 在 org.testng.TestNG.run(TestNG.java:1104) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)

【问题讨论】:

  • 您似乎是从其他地方复制此代码而忘记将字符串从 webdriver.chrome.driver 替换为 webdriver.gecko.driver

标签: java selenium-webdriver selenium-chromedriver


【解决方案1】:

您在 "System.setProperty("webdriver.chrome.driver", "geckodriver.exe");" 附近使用了错误的语法。将 "chrome.driver" 替换为 "gecko.driver"

@Test public void test(){
System.setProperty("webdriver.chrome.driver", "geckodriver.exe");       
WebDriver driver=new FirefoxDriver();
driver.get("https://google.com");
driver.manage().window().maximize();
}

替换为

@Test public void test(){
System.setProperty("webdriver.gecko.driver", "geckodriver.exe");
WebDriver driver=new FirefoxDriver();
driver.get("https://google.com");
driver.manage().window().maximize();
}

【讨论】:

  • @iamasnkalp89:- 哎呀我的错误我更正了我的代码:- '@Test public void test(){ System.setProperty("webdriver.gecko.driver", "geckodriver.exe"); WebDriver driver=new FirefoxDriver(); driver.get("google.com"); driver.manage().window().maximize(); }' 但仍然抛出同样的错误。
【解决方案2】:

错误

Exception is:- java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V at 

是 Java 告诉您您的代码在内部调用一个名为

的方法的方式
void checkState(boolean, java.lang.String, java.lang.Object)

com.google.common.base.Preconditions 类中,但此方法不可用。

这通常发生在您的类路径混乱时。

您没有提到您正在使用的 Selenium 版本。所以我假设你正在使用最新发布的 Selenium 版本,即3.5.2

请确保您使用的是com.google.guava:guava 版本23.0

如果您使用的是 Maven,那么您也许可以将如下所示的依赖项添加到您的 pom 文件中。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

【讨论】:

  • :- 谢谢!!是的,我使用的是 3.5.2 selenium 版本,并且我还在我的 pom.xml 中添加了上述依赖项,但它仍然抛出相同的错误。
  • 依赖的顺序在maven中很重要。请尝试将此依赖项添加为第一个。您可以尝试运行mvn dependency:tree 以找出您的哪些依赖项引入了较旧的 guava 版本并相应地添加排除项
【解决方案3】:

这是冲突问题,你应该检查项目结构,如果它存在2个Maven,它是冲突问题,你必须删除“Maven:com.google.guava:guava:jdk ...”。如果它只存在 1 个 Maven guava,只需要更新依赖项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2021-08-28
    • 2018-04-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多