Я последовал за this article, объясняя, как оживить COM-объект Internet Explorer с помощью jQuery. Хотя автор использовал Python, я хочу сделать что-то подобное в Powershell.Powershell: Использование jQuery через InternetExplorer.Application
Сейчас у меня есть этот код:
function addJQuery ($browser) {
$url="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
$document = $browser.document
$window = $document.parentWindow
$head = @($document.getElementsByTagName("head"))[0]
$script = $document.createElement("script")
$script.type = "text/javascript"
$script.src = $url
$head.appendChild($script)
while (!$window.jQuery) {
sleep -milliseconds 100
}
return $window.jQuery
}
$ie = New-Object -comobject InternetExplorer.Application
$ie.visible = $true
$ie.Navigate("https://some.site.com")
while ($ie.busy) {start-sleep -milliseconds 500}
$j = addJQuery $ie
С Скрипач и через коллекцию document.scripts я проверил, что файл будет загружен. Тем не менее, сценарий спит навсегда, и когда я пытаюсь вывести $ window.jQuery, он ничего не выводит на консоль PowerShell ISE.
Сценарий, тем не менее, правильно загружен, поскольку jQuery-Functions можно вызвать из консоли браузера или с помощью execScript().
Похоже, проблема заключается в том, что DOM-представление, доступное через документ $ ie.document, не обновляется, когда изменения DOM выполняются с помощью JavaScript. Но не должен ли COM-объект Internet Explorer вести себя таким же образом в Powershell, как в Python?
Вы пробовали Watin? Здесь можно выполнить некоторый код js. Я думаю, можно было бы также загрузить jQuery. – stej
@stej Спасибо за подсказку, но я действительно не хочу добавлять какие-либо зависимости к проекту. Это одна из причин, по которой я пишу ее в Powershell. – raphinesse