我正在尝试使用 Java FX 的类 WebEngine 单击按钮。我可以与页面交互以执行其他操作,例如使用以下内容从文本框中读取:
webEngine.executeScript("document.getElementsByName(\"myText\")[0].value = \"Test\";");
上面的代码片段工作正常,但是当我尝试执行以下三个示例来按下按钮/提交表单时,什么也没有发生。
document.myForm.submit();
document.getElementById(\"myForm\").submit();
document.getElementById("theSubmitButton").click();
以上三个都在使用 Firefox Web 控制台时工作,但当我将它们更改为 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)。