У меня есть ссылка на странице Сайтов Google, на которой запущен скрипт Google Apps. Работает нормально, когда я вручную нажимаю на ссылку в Firefox.
Кажется, все работает нормально, когда я делаю то же самое с помощью HtmlUnit. С помощью HtmlUnit я могу войти (необходимо выполнить вход при запуске сценариев Google Apps), перейти на веб-страницу, определить ссылку и щелкнуть ее, но сценарий не запускается.
Суть кода проста:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page = webClient.getPage("https://sites.google.com/site/mywebpage");
HtmlAnchor anchor = page.getAnchorByName("MyAnchor");
anchor.click();
Так чего не хватает или что я делаю не так?
Я создал исходную ссылку на веб-странице с:
<a href="/macros/sites?action=run&lib=094bahv51120b3d65&funcName=MyFunctionName" name="MyAnchor">Click here to run function</a>
При сохранении редактирования веб-страницы Сайты Google автоматически меняют это на
<a href="#" name="MyAnchor" class="apps-script-run-link" id="ACiQKe2HyNeo..etc...01120b3d65#MyFunctionName">Click here to run function</a>
Не работает click()
, потому что он действует на атрибут href, который теперь является просто "#" вместо определения ссылки?
Или языковая поддержка HtmlUnit для JavaScript (Mozilla Rhino) не выполняет Javascript правильно для обработки нажатой ссылки (что означает, что мне нужно заменить Rhino чем-то, что распознает Javascript на веб-странице сайтов Google)?
Или какая-то другая ошибка, которую я сделал?
Я заблудился, поэтому любая помощь очень ценится!
UPDATE
Я последовал вашему предложению, Родни, и обнаружил, что проблема не заключалась в выходе с сайтов Google. Использование HtmlUnit для нажатия на ссылку «Выйти» после щелчка по ссылке для выполнения скрипта заставляет скрипт работать нормально. Единственная проблема заключается в том, что возникает следующая ошибка (которая не останавливает выполнение скрипта):
SEVERE: запуск задания завершился с неожиданным
RuntimeException:
Ошибка типа: невозможно
установить для свойства "innerHTML" значение null
«Готовый сценарий: Готовый сценарий
MyFunctionName "
ОБНОВЛЕНИЕ 2
Теперь решили и эту проблему. Недостаточно времени для завершения сценария перед выходом из системы. Добавление это исправило это:
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
Большое спасибо за вашу помощь, Родни - и Навин за хорошее редактирование!