т.е. прежде чем сесть за руль машины, нужно изучить ДЕТАЛЬНО все этапы проектирования, производства деталей и затем сборки автомобиля? ню-ню...
Естественно. Потому что вы знаете, что такое логин, что такое лог и то, что лог можно сохранить в файл. Кстати, что такое файл тоже нужно знать.
Здесь бывают такие новички, которые текстовые файлы называют "файл блокнота". Для них эта ваша функция будет такой же непонятной, как вам UIA_FindAllElements.
я исхожу что тот кто пытается программировать имеет хотя бы базовые понятия о том ЧТО такое программирование...
Найти все элементы, начиная от элемента-родителя $oParent, имеющих свойство "ControlType" ($UIA_ControlTypePropertyId), со значением свойства равным $UIA_HyperlinkControlTypeId. Или так: найти все ссылки в дереве элемента $oParent. Что вам непонятно? Дерево? Элемент? Свойство? Значение? Изучайте UIAutomation, чтобы было понятно.
1. открыл google.com, вбил Пушкин, нажал поиск
2. на полученной странице - куча ссылок на различные ресурсы
3. нажал F12 и в поле кода, задал поиск "ControlType" - результатов 0.
4. $UIA_HyperlinkControlTypeId - насколько я понял - это константа, которая определяет что искомый объект - линк (ещё вопрос это будет a или поиск непосредственно по href)
другими словами - само описание компонентов функции - НЕ наводит на мысль о том, что это и как его найти, например в ручном режиме.
итог: нужно было задать вопрос, узнать что $UIA_HyperlinkControlTypeId = это константа... которая (скорее всего) привязана к типу объекта на странице типа линк.... и сделать вывод, что ControlType - это внутреннее определение, которое мало помогает
------------
изучать - это круто... жаль что автор не озаботился об интуитивности описания, чего тут увы, не наблюдается.
для примера - оболочка написанная на базе Selenium - > Selenide
поиск элемента на странице:
$("#loginBtn") или
$(".active")
вроде выглядит ещё более ужасно и не понятно.
но в описании поясняется:
$ = Find Element (by some condition)
# - search by ID = By.id ("loginBtn")
. - search by class = By.class ("active")
т.е. достаточно в случае страницы Гугул - Пушкин - найти нужный мне линк, узнать (например) его ID, и задать поиск: $("#requiredLinkID")
как видно - авторы озаботились о том, чтоб ЕЩЁ более НЕ ОЧЕВИДНЫЙ код - тем не менее читался и понимался адекватно.... чего тут увы, и не наблюдается.
подытоживая беседу - я не критикую сам код, особенно когда он работает и правильно.
я лишь сожалею, что для того, чтоб разобраться в том как, зачем и почему этот код ТАК оформлен - одной интуиции и знаний программирования недостаточно... а тупой копи-паст, хоть и решает текущую проблему - не добавляет программисту существенных знаний.