提交表单时{HtmlUnit StackOverflowError

时间:2015-10-23 09:45:51

标签: java selenium-webdriver openshift stack-overflow htmlunit

我通常不会发布这类问题,但这个问题让我发疯。我正在使用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();

但问题完全一样......

1 个答案:

答案 0 :(得分:2)

小型齿轮每个都有512MB RAM和1GB磁盘空间,所以运行这样的资源密集型产品#34;应用程序可能并不总是可行,您可以考虑升级到中型或大型设备。

此外,尝试增加堆栈大小可能是一种选择,请参阅:How to increase the Java stack size?

您可以查看Openshift Marketplace以查看监听磁带。