Как выполнить случайный код Javascript на веб-странице? - PullRequest
1 голос
/ 09 января 2010

Я использую htmlunit для тестирования некоторых страниц, и я хотел бы знать, как я могу выполнить некоторый код JavaScript в контексте текущей страницы. Я знаю, что в документах говорится, что мне лучше подражать поведению пользователя на странице, но это не работает так :( (У меня div, у которого есть свойство onclick, я называю его click метод, но ничего не происходит). Итак, я немного погуглил и попробовал:

JavaScriptEngine jse = webClient.getJavaScriptEngine();
jse.execute(page, what here?);

Похоже, мне нужно сначала создать сценарий, но я не нашел информации о том, как это сделать (верно). Может ли кто-нибудь поделиться фрагментом кода, показывающим, как заставить экземпляр веб-клиента выполнить необходимый код?

Ответы [ 3 ]

1 голос
/ 09 января 2010

Вам нужно вызвать executeJavaScript () на странице, а не на webClient.

Пример:

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
webClient.setJavaScriptEnabled(true);
HtmlPage page = webClient.getPage("http://www.google.com/ncr");
ScriptResult scriptResult = page.executeJavaScript("document.title");
System.out.println(scriptResult.getJavaScriptResult());

печатает "Google". (Уверен, у вас будет еще более интересный код для вставки.)

1 голос
/ 09 января 2010

Я не знаю, JavaScriptEngine вы цитируете, и, возможно, это не тот ответ, который вам нужен, но это звучит как идеальный случай для Selenium IDE .

Selenium IDE - это надстройка Firefox, которая записывает клики, ввод текста и другие действия для выполнения теста, который можно воспроизвести в браузере.

0 голосов
/ 09 февраля 2010

В TestPlan с использованием бэкэнда HTMLUnit пример Google выглядит так:

GotoURL http://www.google.com/ncr
set %Title% as evalJavaScript document.title
Notice %Title%
...