使用HtmlUnit单击javascript按钮

使用HtmlUnit单击javascript按钮,java,javascript,button,htmlunit,Java,Javascript,Button,Htmlunit,我正在尝试使用HTMLUnit单击Html按钮。 按钮代码: <input class="Submit" value="I Accept." type="submit" name="ButtonSubmit" id="button" onclick="/*some looong js code*/" tabindex="16"> 我尝试使用click();方法,但它不起作用 同时按下回车键: final HtmlTextInput textinput = form.getInput

我正在尝试使用HTMLUnit单击Html按钮。 按钮代码:

<input class="Submit" value="I Accept." type="submit" name="ButtonSubmit" id="button" onclick="/*some looong js code*/" tabindex="16">
我尝试使用click();方法,但它不起作用

同时按下回车键:

final HtmlTextInput textinput = form.getInputByName("SomeInput");
//filling input
HtmlPage page = textinput.type(KeyboardEvent.DOM_VK_ENTER);

我认为问题在于js代码。它只是不使用HTMLUnit运行。(使用浏览器手动填写表单,效果很好。)感谢您的帮助。

我不知道这是否能解决您的问题,但有两件事我会采取不同的方法来解决(Javascript似乎不会点击元素):

  • 使用
    form.getElementById(“按钮”)
    而不是
    getInputByName
  • 使用
    Thread.sleep
    等待效果发生(大约350毫秒似乎是一个神奇的数字)

即使这样,我仍然会看到非确定性测试失败,因为单击的效果有时似乎不会发生。

确保在代码中启用JS

webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().SetThroweExceptionOnScriptError(false)

我尝试过元素的东西,但它没有改变任何东西。JS仍然没有运行。睡眠不太好。见我上面的评论。如果您的
表单
的类型是
HtmlPage
,这实际上应该可以工作。
表单
的类型是什么?HtmlForm form=page.getFirstByXPath(“//form[@class='reg-form']”);而且这个页面是HTMLAGEIT,如果你说的都是
它不工作
=>那么会发生什么呢?您得到的输出是什么?什么错误/异常?它不返回任何错误或异常。page2返回带有fielld输入的html页面,但它不向服务器发送http请求。
final HtmlTextInput textinput = form.getInputByName("SomeInput");
//filling input
HtmlPage page = textinput.type(KeyboardEvent.DOM_VK_ENTER);