Java Htmlunit在单击后不会重定向
我正在使用Java Htmlunit在单击后不会重定向,java,htmlunit,Java,Htmlunit,我正在使用net.sourceforge.htmlunit中的htmlunit来模拟web浏览器。我尝试登录steam web应用程序,但遇到了问题。设置凭据后,我想使用单击方法: final WebClient webClient = new WebClient(); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.setC
net.sourceforge.htmlunit
中的htmlunit
来模拟web浏览器。我尝试登录steam web应用程序,但遇到了问题。设置凭据后,我想使用单击方法:
final WebClient webClient = new WebClient();
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
webClient.setCookieManager(new CookieManager());
final HtmlPage loginPage = webClient.getPage(loginPageConfiguration.getLoginPageUrl());
final HtmlTextInput user = loginPage.getHtmlElementById(loginPageConfiguration.getLoginInputId());
user.setText(loginCredentials.getUsername());
final HtmlPasswordInput password = loginPage.getHtmlElementById(loginPageConfiguration.getPasswordInputId());
password.setText(loginCredentials.getPassword());
final HtmlPage afterLoginPage = loginPage.getHtmlElementById(loginPageConfiguration.getLoginButtonId()).click();
在正常浏览器中,成功登录后会重定向到http://store.steampowered.com/
但后登录页面仍在上一个登录页面中 在不知道该页面并且没有访问凭据的情况下,我只能猜测。该应用程序可能是一个单页应用程序,它使用ajax(可能与重定向相结合)替换可视内容。因为ajax是异步的,所以在单击之后和寻址页面之前等待一段时间可能会有所帮助
通过检查真实浏览器的http通信(通过使用开发人员工具或使用Charles之类的web代理),了解正在发生的事情也可能是一个很好的起点。您可以将其与HtmlUnit完成的通信进行比较(例如,启用HttpClient wire日志)
另一个选项可能是javascript错误。请检查您的日志输出。在不知道页面和拥有访问凭据的情况下,我只能猜测。该应用程序可能是一个单页应用程序,它使用ajax(可能与重定向相结合)替换可视内容。因为ajax是异步的,所以在单击之后和寻址页面之前等待一段时间可能会有所帮助
通过检查真实浏览器的http通信(通过使用开发人员工具或使用Charles之类的web代理),了解正在发生的事情也可能是一个很好的起点。您可以将其与HtmlUnit完成的通信进行比较(例如,启用HttpClient wire日志)
另一个选项可能是javascript错误。请检查日志输出。https://store.steampowered.com/login
成功完整登录后,应重定向到http://store.steampowered.com/
我试图在循环中等待,或者添加waitForBackgroundJavaScript
,但它不起作用。另外webClient.setAjaxController(新的NicelyResynchronizingAjaxController())代码>@ByeBye:Steam不太可能有安全功能,这会禁用用户界面的自动化。如果我能抽出时间,我会看看。但是页面看起来像是一个真正的挑战……https://store.steampowered.com/login
成功完整登录后,应重定向到http://store.steampowered.com/
我试图在循环中等待,或者添加waitForBackgroundJavaScript
,但它不起作用。另外webClient.setAjaxController(新的NicelyResynchronizingAjaxController())代码>@ByeBye:Steam不太可能有安全功能,这会禁用用户界面的自动化。如果我能抽出时间,我会看看。但是页面看起来像是一个真正的挑战。。。。