我只是想设置并能够从Selenium的网站运行example。但是我已经将它缩小到导致StackOverflowError的FirefoxDriver构造函数。我使用InternetExplorerDriver获得相同的行为,但不是HtmlUnitDriver。
以下代码
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WebDriverTest {
@Test
public void test() {
WebDriver driver = new FirefoxDriver();
}
}
生成以下堆栈跟踪:
java.lang.StackOverflowError
at java.lang.Exception.<init>(Unknown Source)
at java.lang.reflect.InvocationTargetException.<init>(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.json.JSONObject.populateMap(JSONObject.java:937)
at org.json.JSONObject.<init>(JSONObject.java:272)
at org.json.JSONObject.wrap(JSONObject.java:1539)
at org.json.JSONObject.populateMap(JSONObject.java:939)
at org.json.JSONObject.<init>(JSONObject.java:272)
at org.json.JSONObject.wrap(JSONObject.java:1539)
at org.json.JSONObject.populateMap(JSONObject.java:939)
at org.json.JSONObject.<init>(JSONObject.java:272)
at org.json.JSONObject.wrap(JSONObject.java:1539)
at org.json.JSONObject.populateMap(JSONObject.java:939)
at org.json.JSONObject.<init>(JSONObject.java:272)
at org.json.JSONObject.wrap(JSONObject.java:1539)
at org.json.JSONObject.populateMap(JSONObject.java:939)
at org.json.JSONObject.<init>(JSONObject.java:272)
at org.json.JSONObject.wrap(JSONObject.java:1539)
at org.json.JSONObject.populateMap(JSONObject.java:939)
at org.json.JSONObject.<init>(JSONObject.java:272)
:
:
我正在使用selenium-java-2.22.0和随下载打包的json jar(json-20080701.jar)
另外值得注意的是,在运行新的FirefoxDriver时,Firefox会启动,您会看到一个新的标签页。使用InternetExplorerDriver,没有窗口打开,但它产生相同的堆栈跟踪,JSONObject无限循环。我在Windows 7上运行Firefox 12.0和IE9。
答案 0 :(得分:7)
类路径中的某些JAR文件与Selenium依赖项存在冲突。即使你正在使用常春藤,它也有点奇怪。其中一个依赖项很可能包含其jar文件中的冲突类 - 或者您的依赖项需要同一个库的两个不同版本。
无论如何,为了将来的用户阅读本文 - 使用一些依赖管理器为你做罐子的艰苦工作。如果您有超过10个具有依赖项的项目,请不要尝试手动维护库 - 您很可能很快就会搞砸它们。 This is quite a reasonable read on dependency solutions, follow some of the links there, don't be lazy.依赖管理者需要一些时间来掌握,他们是一个适合自己的世界。但他们帮了很多忙。
不要使用同一个库的多个版本。如果你使用多个库,其中两个使用同一个东西的不同版本......祝你好运!
除此之外......我们唯一的希望是Java Module System,它将在 Java 8 Java 9中引入。
答案 1 :(得分:1)
我们也正在讨论这个问题,如果你的测试项目的org.json类比其类似路径上的某个WebDriver需要的其他/旧版本(20080701)那样,我可以确认你会遇到这个。
PS:FTR我错误地打开了http://code.google.com/p/selenium/issues/detail?id=4123&#34;&#34;,所以只是为了澄清这不是一个WEBDRIVER问题。
答案 2 :(得分:0)
将类路径中的json库替换为位于/Selenium-x.xx/lib/json-20080701.jar中的selenium。