java - 提交表单时出现 HtmlUnit StackOverflowError

标签 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)

(他继续了一会儿,但所有的台词都是一样的......)

正如您从堆栈跟踪中看到的,我正在使用 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();

但问题是完全相同的......

最佳答案

小型齿轮各有 512MB RAM 和 1GB 磁盘空间,因此运行此类“资源密集型”应用程序可能并不总是可行,您可能会考虑升级到中型或大型齿轮。

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

您可以查看 Openshift Marketplace用于监控墨盒。

关于java - 提交表单时出现 HtmlUnit StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299371/

相关文章:

java - 简单的 UML 图...这个布局正确吗?

java - 将类作为参数传递的泛型方法

java - 当我在步骤 def 方法中使用 Cucumber(场景场景)参数时,显示使用 1 个参数声明的错误。小 cucumber 步骤有 0 个参数

java - 如何从 web 表访问特定行

selenium - 使用 BrowserMobProxy 进行 Selenium 测试时 Chrome 中的 ERR_EMPTY_RESPONSE

mysql - openshift mysql 数据库模式创建脚本

javascript - 在 openshift Node js 应用程序中获取请求

java - 如何解析这个 JSONObject 以从 twitter 搜索 API 获取数组内的值来获取每条推文(名称、正文)?

java - Android 中来自 XML 的对话框的按钮单击事件

python - 使用 openshift 部署本地 django 应用程序