我通常不会发布这类问题,但这个问题让我发疯。我正在使用SeleniumWebDriver填写表单并提交。我是从我的计算机上完成的,它工作得很好,但当我将应用程序上传到OpenShift时,我在提交表单时收到了StackOverflowError。这是堆栈跟踪:
[0m[31m04:29:06,529 ERROR [stderr] (Thread-110) Exception in thread "Thread-110" java.lang.StackOverflowError
[0m[31m04:29:06,542 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1311)
[0m[31m04:29:06,547 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1281)
[0m[31m04:29:06,547 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1286)
[0m[31m04:29:06,548 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1286)
[0m[31m04:29:06,548 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1286)
[0m[31m04:29:06,564 ERROR [stderr] (Thread-110) at net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExp.emitREBytecode(NativeRegExp.java:1286)
(他会继续一段时间,但所有的线都是一样的......)
从stacktrace中可以看出,我使用的是HtmlUnit WebDriver。我用谷歌搜索了这个,但我没有找到任何有我确切问题的人,虽然看起来HtmlUnit经常会出现StackOverflow错误...
有人能告诉我这是一个错误还是我错过了什么?非常感谢任何帮助,谢谢!
修改
这是我的代码:
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME);
driver.setJavascriptEnabled(true);
driver.get(myUrl);
//Finds the fields of the login form and fills it. Also removes the Remember me checkbox.
WebElement email = driver.findElement(By.id("email"));
email.clear();
email.sendKeys(username);
WebElement rememberMe = driver.findElement(By.name("persistent"));
if(rememberMe.isSelected())rememberMe.click();
WebElement pass = driver.findElement(By.id("pass"));
pass.clear();
pass.sendKeys(pass);
//HERE IS WHERE THE ERROR OCCURS:
pass.submit();
我还尝试从按钮手动获取输入,然后点击它,而不是提交:
WebElement button = driver.findElement(By.id("u_0_2"));
button.click();
但问题完全一样......
答案 0 :(得分:2)
小型齿轮每个都有512MB RAM和1GB磁盘空间,所以运行这样的资源密集型产品#34;应用程序可能并不总是可行,您可以考虑升级到中型或大型设备。
此外,尝试增加堆栈大小可能是一种选择,请参阅:How to increase the Java stack size?
您可以查看Openshift Marketplace以查看监听磁带。