我正在使用可调用线程运行Selenium测试用例,当我尝试运行测试用例时,我得到了java.lang.NoSuchFieldError:linux异常在executerService.submit(callable).get()这一行。
我的测试用例是可调用的,对于每个测试用例,我都会创建可调用的对象并提交它,但是提交后我得到
java.util.concurrent.ExecutionException: java.lang.NoSuchFieldError: LINUX
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at com.xyz.TestManager.startTest(TestManager.java:142)
at com.ensarm.crawler.socket.SocketServerThread.run(SocketServerThread.java:57)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.NoSuchFieldError: LINUX
at org.openqa.selenium.firefox.FirefoxBinary.isOnLinux(FirefoxBinary.java:60)
at org.openqa.selenium.firefox.FirefoxBinary.startProfile(FirefoxBinary.java:72)
at org.openqa.selenium.firefox.FirefoxBinary.clean(FirefoxBinary.java:225)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:80)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:215)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:106)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:154)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:150)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:97)
at com.ensarm.crawler.web.browser.FirefoxBrowser.initialize(FirefoxBrowser.java:308)
at com.xyz.navigator.IpProxyNavigator.initialize(IpProxyNavigator.java:46)
at com.xyz.tests.TestThread.call(TestThread.java:56)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
我正在使用以下罐子:Selenium-firefox-driver-2.20.0.jar,webdriver-common-0.9.7376.jar,webdriver-firefox-0.9.7376.jar我的fireFox版本是3.6.23
根本原因
源代码中引用的 Platform.LINUX 字段不存在。
修复
您需要升级到最新版本的硒罐。