有没有办法在HtmlUnit中使用session更改url?
我的情况如下所示,
在浏览器中,这非常好。但是在HtmlUnit中,我只能获得test.raja.com而不是主页。我尝试过WebWindow,WebConnection,addCookie等但没有任何作用。
在https://community.jboss.org/wiki/UsingTheHtmlUnitAPIWithJSFUnit
中找到了这个在同一浏览器会话中获取新网址
如果要模拟用户在浏览器会话中键入URL 或者由于任何其他原因需要做GET请求,你需要使用 WebClient和JSFUnit的WebConversationFactory,如下例所示:
JSFSession jsfSession = new JSFSession(“/ index.jsf”); Web客户端 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
答案 0 :(得分:3)
问题解决了。使用以下代码
webClient.setRedirectEnabled(true);
webClient.setJavaScriptEnabled(true);
webClient.setThrowExceptionOnScriptError(false);
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setUseInsecureSSL(true);
webClient.setCssEnabled(true);
webClient.setAppletEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.waitForBackgroundJavaScript(10000);