2017-09-06 40 views
1

我使用Java + selenium + testng + maven。 我試圖使用WebDriver Manager而不是標準用法。 根據API的說明申報後,我遇到了一個問題。 編譯時錯誤發生:WebDriver Manager java.lang.NoSuchMethodError

java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.copyInputStreamToFile(Ljava/io/InputStream;Ljava/io/File;)V 

at io.github.bonigarcia.wdm.Downloader.download(Downloader.java:128) 
at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:277) 
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:108) 
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:87) 
at Base.BaseDriver.startBrowser(BaseDriver.java:67) 
at Base.BaseTest.beforeClass(BaseTest.java:24) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:170) 
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:104) 
at org.testng.TestRunner.privateRun(TestRunner.java:773) 
at org.testng.TestRunner.run(TestRunner.java:623) 
at org.testng.SuiteRunner.runTest(SuiteRunner.java:357) 
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352) 
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310) 
at org.testng.SuiteRunner.run(SuiteRunner.java:259) 
... 

這裏是我的代碼框架:

public static WebDriver startBrowser() { 

    String browser = Property.getProperties("browser"); 

    if (browser.equalsIgnoreCase("firefox")) { 
     FirefoxDriverManager.getInstance().setup(); 
     sDriver = new FirefoxDriver(); 
    } else if (browser.equalsIgnoreCase("chrome")) { 
     ChromeDriverManager.getInstance().setup(); 
     sDriver = new ChromeDriver(); 
    } 

    sDriver.manage().window().maximize(); 
    sDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    return sDriver; 
} 

和驅動程序的使用:

@BeforeClass 
public void beforeClass() throws Exception { 
    BaseDriver.startBrowser(); 
} 

回答

0

WebDriverManager 1.7.1內部使用Apache commons-io 2.5。看起來你正在項目中使用該庫的不同版本,結果你會得到該錯誤。

最簡單的解決方案可能是將您的commons-io版本升級到2.5,這是本文撰寫時最新的穩定版本。

+0

謝謝。我更新了依賴關係。 Chrome驅動程序有效。但在嘗試使用firefox時,我遇到了一個問題:java.lang.RuntimeException:java.lang.RuntimeException:檢測到響應錯誤。 HTTP/1.1 401未經授權 –

相關問題