У меня есть ссылка на странице Сайтов Google, которая запускает скрипт Google Apps. Он отлично работает, когда я вручную нажимаю ссылку в Firefox.
Кажется, все работает нормально, когда я делаю то же самое с помощью HtmlUnit. С помощью HtmlUnit я могу войти в систему (необходимо войти в систему при запуске сценариев Google Apps), перейти на веб-страницу, определить ссылку и щелкнуть ее, но сценарий не запускается.
Суть кода проста:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX<a href="#" name="MyAnchor" class="apps-script-run-link" id="ACiQKe2HyNeo..etc...01120b3d65#MyFunctionName">Click here to run function</a>
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)? Или какая-то другая основная ошибка, которую я сделал?
Я потерялся, поэтому любая помощь очень ценится !!
ОБНОВЛЕНИЕ
Я последовал твоему предложению, Родни, и обнаружил, что проблема заключалась не в выходе из сайтов Google. Использование HtmlUnit для щелчка по ссылке «Выйти» после щелчка по ссылке для выполнения сценария приводит к тому, что сценарий запускается нормально. Единственная проблема - это вызывает следующую ошибку (которая не останавливает выполнение скрипта):
СЕРЬЕЗНО: выполнение задания завершилось неудачно из-за непредвиденного исключения RuntimeException:
TypeError: невозможно установить для свойства "innerHTML" значение null значение "Завершенный сценарий: завершенный сценарий MyFunctionName"
ОБНОВЛЕНИЕ 2
Решили и эту проблему. Не хватило времени для завершения сценария перед выходом из системы. Добавление этого исправило это:
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
Большое спасибо за вашу помощь, Родни - и Нэвин за хороший монтаж!