有什么方法可以在 HtmlUnit 中使用 session 更改 url?
我的情况如下所示,
- 使用凭据登录到http://test.raja.com 。
- 获取页面http://home.raja.com,它应该让我的主页登录。
在浏览器中,这完全没问题。但是在 HtmlUnit 中,我只能得到 test.raja.com 而不是主页。我尝试了 WebWindow、WebConnection、addCookie 等,但没有任何效果。
在https://community.jboss.org/wiki/UsingTheHtmlUnitAPIWithJSFUnit找到这个
在同一浏览器会话中获取新 URL
如果您想模拟用户在浏览器会话中键入 URL 或出于任何其他原因需要执行 GET 请求,则需要使用 WebClient 和 JSFUnit 的 WebConversationFactory,如下例所示:
JSFSession jsfSession = new JSFSession("/index.jsf"); WebClient webClient = jsfSession.getWebClient(); webClient.getPage(WebConversationFactory.getWARURL() + "/myotherpage.jsf");
JSFSession、JSFServerSession 和 JSFClientSession 将与 WebClient 保持同步,您可以继续正常使用这些对象。此外,HttpSession 将相同,因为 WebClient 将继续设置 JSESSIONID cookie。
这在 HtmlUnit 本身中可能吗?
我的示例代码
final WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("https://home.raja.com");
final List<FrameWindow> window = page.getFrames();
final HtmlPage pageTwo = (HtmlPage) window.get(0).getEnclosedPage();//this is test.raja.com served via iframe
HtmlForm form = pageTwo.getFormByName("login");
HtmlInput userName = (HtmlTextInput)form.getInputByName("testone");
HtmlInput password = (HtmlPasswordInput)form.getInputByName("testtwo");
userName.setValueAttribute("guest");
password.setValueAttribute("guest");
HtmlInput submit = (HtmlSubmitInput)form.getInputByName("submit");
HtmlPage pagethree = (HtmlPage)submit.click();
page = webClient.getPage("https://home.raja.com"); //here it again goes for login page