如何检测表单提交是否有效htmlunit

时间:2017-06-20 02:08:58

标签: java htmlunit

我正在尝试从marinetraffic.com进行网络抓取。这是一个非常简单的形式:

<form enctype="multipart/form-data" id="login_form_REACT" class="text-left ws-validate" role="form" accept-charset="utf-8">
<div style="display: none;">
    <input type="hidden" name="_method" value="POST">
</div>
<div class="form-group">
    ...
    <input type="email" id="email" class="form-control" required="" placeholder="Email" name="data[email]">
    ...
    <input type="password" id="password" class="form-control user-error" required="" placeholder="Password" name="data[password]">
    ...
    <input type="checkbox" name="data[remember]" id="remember2" value="1">
    ...
    <button type="submit" class="btn btn-lg btn-block btn-primary vertical-offset-10 btn btn-default">Sign in</button>
</div>
</form>

到目前为止我所拥有的:

String username = "username@gmail.com";
String password = "fake_password";

WebClient client = new WebClient(BrowserVersion.CHROME);
client.getOptions().setThrowExceptionOnScriptError(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());

HtmlPage webPage = (HtmlPage)client.getPage("https://www.marinetraffic.com/");
HtmlForm loginForm = (HtmlForm)webPage.getElementById("login_form_REACT");

loginForm.getInputByName("data[email]").setValueAttribute(username);
loginForm.getInputByName("data[password]").setValueAttribute(password);

((HtmlButton)loginForm.getFirstByXPath("//button[@type='submit']")).click();

我打印了生成的网页,它只是同一个网页,但填写了表格。我不知道如何通过点击按钮测试帖子请求是否结束。

有什么办法可以用HtmlUnit检测传出的HTTP请求吗?或者有关为什么这个网页不允许我登录的任何建议?不确定这是否是相关信息,但MarineTraffic在登录期间执行页面刷新而不是页面重定向。

1 个答案:

答案 0 :(得分:0)

是的。只需启用HttpClient线路记录。