Menu
Categories
AutoIt3 – _IEFrameGetObjByName() failure after IE update
December 22, 2014 Софт

Недавняя группа системных обновлений Windows привела к неработоспособности утилиты автоматизации AutoIt в контексте работы с браузером IE и сайтами, представляющими собой группу фреймов, объединенных во FRAMESET.

После установки системного обновления KB3025390 вызов функции _IEFrameGetObjByName() из библиотеки IE.au3 приводит к ошибке следующего вида:

"C:\autoit\Include\IE.au3" (1808) : ==> Variable must be of type "Object".:
Return SetError($_IEStatus_Success, $oTemp.GetElementsByTagName($s_TagName).length, $oTemp.GetElementsByTagName($s_TagName))
Return SetError($_IEStatus_Success, $oTemp^ ERROR
>Exit code: 1    Time: 1.645

Детальное рассмотрение алгоритмов работы IE.au3 приводит к заключению о том, что обновление KB3025390 делает невозможным обращение к содержимому вложенных фреймов, несмотря на то, что они находится в одном и том же домене и ограничения кросс-доменной политики безопасности не должно применяться в данном случае. Аналогичную проблему подтверждают и в других источниках, не связанных с программированием под AutoIt.

Решение проблемы простое – деинсталляция обновления KB3025390 восстанавливает работоспособность скриптов, взаимодействующих с фреймами.

PS: Что характерно, согласно описанию обновления KB3025390 – оно должно исправлять проблемы, возникающие после установки предыдущего кумулятивного патча IE, выпущенного парой недель ранее. И ни слова про изменение политик работы с фреймами там не указано. Вот так и всегда – исправляя одно, ломают другое.

Leave a Reply




*