2016-10-12 10 views
1

Хотелось бы использовать HtmlUnit для выбора опции, которая не находится внутри формы. Тогда мне нужно получить результирующую страницу, конечно. Вот что я пробовал:HtmlUnit выберите опцию, которая отсутствует в форме

public String getNewPage() throws Exception { 
    try (final WebClient webClient = new WebClient()) { 

     webClient.getOptions().setThrowExceptionOnScriptError(false); 
     webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
     webClient.getOptions().setPopupBlockerEnabled(true); 
     webClient.getOptions().setJavaScriptEnabled(true); 

     final HtmlPage page = webClient.getPage(URL); 

     HtmlOption option1 = (HtmlOption) page.getElementById("1"); 
     option1.removeAttribute("selected"); 
     HtmlOption option5 = (HtmlOption) page.getElementById("5"); 
     option5.setSelected(true); 

     // Some code missing here........ 

     return newHtmlString; 
} 

Страница автоматически обновляется при нажатии на эту опцию. Как я могу получить новую страницу после выбора правильной опции?

+0

Не могли бы вы указать URL-адрес? –

+0

Спасибо, но я нашел решение проблемы. Опубликуйте его ниже. – Yster

ответ

1

Что я сделал почти правильно, но то, что не хватало следующее:

page.refresh(); 
    return page.asXml(); 

Тогда у меня была еще одна проблема, чтобы отметить флажок в зарегистрированном. Вот что сработало для меня:

HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput) page.getElementById("cb4"); 
    checkbox.setAttribute("checked", "checked"); 
    checkbox.fireEvent(Event.TYPE_CHANGE); 
    page.refresh(); 
    System.out.println(page.asXml());