Java WebEngine.executeScript无法用于表单或按钮单击

时间:2013-06-23 03:21:21

标签: java javascript javascript-events javafx

我正在尝试使用Java FX的WebEngine类单击一个按钮。我能够与页面进行交互以执行其他操作,例如使用以下内容从文本框中读取:

webEngine.executeScript("document.getElementsByName(\"myText\")[0].value = \"Test\";");

上面的代码片段工作正常,但是当我尝试执行以下三个示例来按下按钮/提交表单时,根本没有任何事情发生。

document.myForm.submit();

document.getElementById(\"myForm\").submit();

document.getElementById("theSubmitButton").click();

上述三个中的所有三个在使用Firefox Web Console时都有效,但在我将它们更改为webEngine.executeScript()时则无效;

有关导致此问题无法在Java webEngine.executeScript()调用中起作用的任何想法吗?

编辑:另外,我知道页面已加载,我已经设置了一些内容,等待页面加载后再调用。

EDIT2:以下是有关Java调用和结果的更多信息。当我拨打以下电话时:

System.out.println(webEngine.executeScript("document.getElementById('theSubmitButton').click();"));

我得到以下结果:

undefined

然而,当我运行时:

System.out.println(webEngine.executeScript("document.getElementById('theSubmitButton');"));

我得到了这个结果:

[object HTMLInputElement]

所以我知道对象存在于我认为的位置,问题是.click()调用。同样,下面的代码仍然可以在Firefox的Web控制台中运行,如下所示,并完成我需要它做的所有事情。

document.getElementById('theSubmitButton').click();

当我在我的java程序中使用.click()函数时(使用.executeScript()),按钮的文本会随着我在任何Web浏览器中看到的而改变,但我需要的实际重定向和表单提交不会发生。当我使用图形webEngine浏览器时,它也不起作用。

表单提交确实可以在其他任何地方使用(Firefox,Chrome,IE)。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

事实证明,文本没有像我期望的那样存储在.value(在textarea中)。当调用.value =“whatever”时,它会锁定浏览器。这是Firefox优雅处理的内容,但webEngine却没有。

将此更改为文本实际存储的.innerHTML(不是我的设计)修复了问题,并调用.click()工作。