2010-01-09 2 views
1

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

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

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

ответ

1

Вам необходимо позвонить в 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

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

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

+0

Я также настоятельно рекомендую Selenium RC – slebetman

0

В TestPlan используя HtmlUnit бэкенд пример Google является:

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