Как обновить содержимое в html, используя htmlunit? - PullRequest
1 голос
/ 29 июня 2011

Мне было очень трудно работать с htmlunit с точки зрения создания нового html-контента на лету, как мы можем сделать в jquery.

Например, с учетом текстового узла:

I am text

Я хочу изменить этот текстовый узел на (если слово больше 3 символов, оно заменяется на span):

I am <span>text</span>

После этого я хочу заменить исходный текстовый узел (я текст) на

I am <span>text</span>

в html-документе, где бы он ни происходил.

Так как мне добиться этого с помощью htmlunit?Есть ли лучшая альтернатива htmlunit в приложениях Java для очистки экрана или модификации приложений типа dom на лету?

В htmlunit я даже не смог найти, как создать новый элемент, поскольку конструкторы в основном отсутствуют или объявлены защищенными.

Ответы [ 3 ]

3 голосов
/ 29 июня 2011

Непонятно, что именно вы хотите делать, но HtmlUnit - программный браузер.Его API позволяет делать в Java то, что пользователь будет делать с помощью клавиатуры и мыши в стандартном браузере.И изменение DOM веб-страницы - это не то, что пользователь делает со своим браузером.

Его API позволяет в любом случае получить доступ к дереву DOM (хотя и не через интерфейсы DOM W3C), и вы должны быть в состоянии сделать это.в Java, что бы вы сделали в JavaScript с DOM.HtmlElement экземпляры могут быть созданы с помощью метода createElement HtmlPage.Но, конечно же, нет «JQuery в Java для HtmlUnit».

2 голосов
/ 28 декабря 2017

HtmlUnit позволяет запускать JS-скрипт в контексте страницы.Например:

String query = <your query>;
HtmlPage page = webClient.getPage(url);
ScriptResult sr = page.executeJavaScript(query);
HtmlPage newPage = sr.getHtmlPage();

newPage будет копией исходной страницы, измененной вашим сценарием.

1 голос
/ 30 июня 2011

HtmlUnit позволяет вам взаимодействовать со страницей через Java примерно так же, как человек взаимодействовал бы со страницей через браузер.

Как бы вы изменили DOM в браузере?

Нет, не напрямую: вместо этого вы нажимаете или вводите текст, чтобы вызвать Javascript на странице, что вочередь изменяет DOM.Аналогично, с помощью HtmlUnit ваш Java-код запускает Javascript на странице, которая, в свою очередь, модифицирует DOM.

...