Что нового

библиотека UIAutomate.au3 получить имена свойств и значений в массив

Сообщения
35
Репутация
-1
подскажите как получить список имена свойств поддерживаемых объектом (InterfaceDispatch) в массив
или подскажите как определить что страница загружена
дерево отдельной вкладки в браузере IE выглядит так
- {Frame Tab}
|-{TabWindowClass}
|-{Shell DocObject View}
|- {Internet Explorer_Server}
дальше уже идут элементы документа
в каком элементе объекта (InterfaceDispatch) и по какому свойству получить информацию что загрузка элементов закончена подскажите пожалуйста
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Gen345
получить список имена свойств поддерживаемых объектом
Запустите Inspect и посмотрите.

как определить что страница загружена <...> в браузере IE
Код:
_IELoadWait()


в каком элементе объекта (InterfaceDispatch) и по какому свойству
А при чём тут интерфейс IDispatch?
 
Автор
G
Сообщения
35
Репутация
-1
InnI сказал(а):
Gen345
получить список имена свойств поддерживаемых объектом
Запустите Inspect и посмотрите.
нормальный ответ я просил назвать свойство и элемент в котором это свойство смотреть надо там у каждого элемента 50 свойств откуда мне знать в каком элементе эта информация содержится и какое свойство за загрузку документа отвечает вот и спрашиваю

как определить что страница загружена <...> в браузере IE
Код:
_IELoadWait()

библиотека IE расчитана на то что браузер работает четко без ошибок и если есть проблемы с окном браузера или вкладкой то все на этом полезность библиотеки заканчивается
_IELoadWait() ваше плохая функция уж лучше Obj.readyState понятно на каком этапе остановилось например если значение 3 то уже можно попробывать поработать со страницей или 1 раз обновить обычно догружается до значения 4

в каком элементе объекта (InterfaceDispatch) и по какому свойству
А при чём тут интерфейс IDispatch?
если не хотите отвечать на вопрос учитывая что библиотека вроде ваша и должны примерно знать имя свойства и в каком примерно элементе искать так и скажите пока сижу пишу функцию создания массива с именами свойств и значений чтоб найти разницу между загруженной страницей и загружаемой :smile:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Gen345
если не хотите отвечать на вопрос
Я вам ответил на два вопроса и один задал. В чём претензия?

библиотека вроде ваша
Она не моя - она принадлежит сообществу. И вам в том числе. А кроме меня вам всё равно никто не ответит.

знать имя свойства и в каком примерно элементе искать
Да какое свойство вам нужно? У страницы нет свойства "загружена", потому что такого объекта - "страница" - не существует. Есть объект "панель", который является родителем всех объектов, находящихся на "странице": ссылки, текст, поля ввода. И все свойства объекта "панель" вы можете узнать в Inspect.

сижу пишу функцию создания массива
Вы пошли по очень долгому и сложному пути. Удачи.

найти разницу между загруженной страницей и загружаемой
Кликните правую панель Inspect (там где свойства и значения), нажмите Ctrl+A Ctrl+C и сохраните информацию из буфера обмена в текстовом файле. Проделайте данные действия при загруженной "странице" и загружаемой. Сравните текстовые файлы.
 
Автор
G
Сообщения
35
Репутация
-1
InnI [?]
Кликните правую панель Inspect (там где свойства и значения), нажмите Ctrl+A Ctrl+C и сохраните информацию из буфера обмена в текстовом файле. Проделайте данные действия при загруженной "странице" и загружаемой. Сравните текстовые файлы.
вот спасибо это боле менее ответ если более точной инфы нет :smile:
претензий нет я не спец вроде задал простой вопрос
просто свойств немерено все на английском машинный перевод хрен поймешь
прежде чем лезть в документ искать элемент хотелось бы получить информацию а загрузился ли документ
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Gen345

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Модератор.






Добавлено:
Сообщение автоматически объединено:

Gen345 как название вашей темы перекликается с вашим вопросом?!

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"библиотека UIAutomate.au3 получить имена свойств и значений в массив " - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
OffTopic:
Garrett
Может пора уже сделать, чтобы нажатие на "Цитировать" работало с выделенным текстом, а при отсутствии выделения выводило окно "Выделите текст для цитирования"?


Gen345
если более точной инфы нет
Даже если я вам напишу функцию, собирающую все свойства и их значения в массив, вам это не поможет. Вам нужно одно конкретное свойство определённого элемента, по которому можно определить загрузку страницы. Например, пока страница загружается, рядом с панелью адреса кнопка "Обновить" превращается в кнопку "Остановить". Следовательно, вы можете просто дождаться появления кнопки с именем "Обновить" у элемента соответствующей панели. Если вам заранее известно, что должно быть на странице, вы можете ждать появления этого элемента (просто наличие элемента без всяких свойств). Можно, в конце концов, считать количество ссылок, кнопок, полей ввода, ещё чего-то, если количество этих элементов известно.



Добавлено:
Сообщение автоматически объединено:

Gen345
загрузился ли документ
Вы работаете не с документом, а с панелью. Представьте, что вы запускаете калькулятор и ждёте, пока отобразятся все кнопки. Вот также и с браузерами работать через UIAutomation.
 
Автор
G
Сообщения
35
Репутация
-1
вот пример работы функции библиотеки IE _IEAttach
имеем такое рабочее окно где одна вкладка не отвечает
e7d68309a2d2.jpg
Код:
Local $HWND = _MyFunc_RegistrIEFrame($NameProgram,1)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : IsHWnd($HWND) = '&IsHWnd($HWND)&@CRLF&'>Error code: '&@error&@CRLF)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _WinAPI_GetClassName($HWND) = ' &_WinAPI_GetClassName($HWND)&@CRLF&'>Error code:'&@error&@CRLF)
Local $Oie = _IEAttach($HWND,"HWND")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ObjName($Oie) = ' & ObjName($Oie) & @CRLF & '>Error code: ' & @error & @CRLF) 

; консоль
@@ Debug(90) : IsHWnd($HWND) = 1
>Error code: 0
@@ Debug(91) : _WinAPI_GetClassName($HWND) = IEFrame
>Error code:0

функция зависла намертво должна вернуть объект "IWebBrowser2" или ошибку выдать

и вот такой вариант используется _IEAttach($HWND,"Embedded") хендл класса Shell DocObject View и возвращает уже объект "HTMLWindow2"
Код:
Local $HWND = _MyFunc_RegistrIEFrame($NameProgram,1)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : IsHWnd($HWND) = '&IsHWnd($HWND)&@CRLF&'>Error code: '&@error&@CRLF)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _WinAPI_GetClassName($HWND) = ' &_WinAPI_GetClassName($HWND)&@CRLF&'>Error code:'&@error&@CRLF)
;Local $Oie = _IEAttach($HWND,"HWND")
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ObjName($Oie) = ' & ObjName($Oie) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Local $s = _MyFunc_ArrayInsetDirectUIHWND($HWND,5)

For $i = 1 To $s[0][0]
ConsoleWrite('Вкладка номер = '&$i&@CRLF&@CRLF)
    For $i_1 = 1 To UBound($s,2)-1
		ConsoleWrite($s[0][$i_1]&" = "&$s[$i][$i_1]&@CRLF)
    Next
    ConsoleWrite(@CRLF&@CRLF)
Next
; консоль 
@@ Debug(90) : IsHWnd($HWND) = 1
>Error code: 0
@@ Debug(91) : _WinAPI_GetClassName($HWND) = IEFrame
>Error code:0
Вкладка номер = 1

Имя таба = Новаявкладка
URL таба = http://seodale.ru/seo/samaya-tyazhyolaya-veb-stranica.html
Класс окна = FrameTab Cover
Дескриптор Frame Tab или Cover Tab = 0x0000000000120206
Класс окна = 
Дескриптор TabWindowClass = 
Класс окна = 
Shell DocObject View = 
Класс окна = 
Internet Explorer_Server = 
Статус подключения к объекту = 
Статус загрузки = 
Объект HTMLWindow2 = 


Вкладка номер = 2

Имя таба = Новаявкладка
URL таба = about:Tabs
Класс окна = Frame Tab
Дескриптор Frame Tab или Cover Tab = 0x0000000000290732
Класс окна = TabWindowClass
Дескриптор TabWindowClass = 0x0000000000100720
Класс окна = Shell DocObject View
Shell DocObject View = 0x0000000000120434
Класс окна = Internet Explorer_Server
Internet Explorer_Server = 0x00000000003605E8
Статус подключения к объекту = успех
Статус загрузки = complete
Объект HTMLWindow2 =

ну и на заметку как я понял любой косяк с одной вкладкой и обращение к объекту "IWebBrowser2" становится невозможным
так что приходится HTMLWindow2 у которого поменьше методов
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Gen345

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"библиотека UIAutomate.au3 получить имена свойств и значений в массив " - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.










P.S. В третий раз просто закрою тему.
 
Верх