AutoIt3 – _IEFrameGetObjByName() failure after IE update

Недавняя группа системных обновлений 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, выпущенного парой недель ранее. И ни слова про изменение политик работы с фреймами там не указано. Вот так и всегда – исправляя одно, ломают другое.

This entry was posted in Софт and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>