Давайте начнем с чего-то общего:
Для настройки клиента, пожалуйста, установите только те опции, которые вам действительно нужны. По умолчанию он ведет себя как настоящий браузер, например, нет необходимости включать куки.
Есть некоторые предупреждения, которые вы можете игнорировать
Невозможно вызвать метод "goRefresh" из undefined
Это потому, что js во фрейме (в вашем случае документ с результирующим фреймом) пытается вызвать функцию из другого фрейма, чтобы обновить капчу. Но вы не загрузили весь набор фреймов - и поэтому функция недоступна ожидаемым образом.
И для получения результата вы должны получить содержимое другого фрейма.
Этокажется, что код работает:
// work with the whole frameset
String url = "http://www.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias";
try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60)) {
// do not stop in case of js errors
webClient.getOptions().setThrowExceptionOnScriptError(false);
HtmlPage frameset = webClient.getPage(url);
HtmlPage searchPage = (HtmlPage) frameset.getFrameByName("leftFrame").getEnclosedPage();
HtmlForm htmlForm = searchPage.getElementByName("mainForm");
// set search field
HtmlTextInput input1 = htmlForm.getInputByName("search1");
input1.setText("10468790497");
// process captcha
HtmlImage image = searchPage.<HtmlImage>getFirstByXPath("//img[@src='captcha?accion=image']");
ImageReader img = image.getImageReader();
BufferedImage buf = img.read(0);
ImageIcon icon = new ImageIcon(buf);
String codigo = JOptionPane.showInputDialog(null, icon, "Captcha image", JOptionPane.PLAIN_MESSAGE);
HtmlTextInput input2 = htmlForm.getInputByName("codigo");
input2.setText(codigo);
// click the button
HtmlElement boton = htmlForm.getElementsByAttribute("input", "value", "Buscar").get(0);
boton.click();
// and get the result
HtmlPage resultPage = (HtmlPage) frameset.getFrameByName("mainFrame").getEnclosedPage();
System.out.println(resultPage.asText());
}
Но вам нужен последний снимок HtmlUnit, чтобы запустить его без ошибки js (была странная ошибка, введенная 10 лет назад), которая теперь исправлена.
Надеюсь, это поможет.