- Сообщения
- 3,999
- Репутация
- 967
Знаю, есть много хороших инструментов для веб разработчиков (сам пользуюсь консолью Chrome).
Но на форуме частенько попадаются вопросы по поводу нахождения id, name, value, index`а элементов форм.
Это и побудило меня написать несложную функцию _IEForm_Inspector, которая выводит отчёт по всем элементам форм.
Пользоваться ей очень просто.
Пример.
Функция
Но на форуме частенько попадаются вопросы по поводу нахождения id, name, value, index`а элементов форм.
Это и побудило меня написать несложную функцию _IEForm_Inspector, которая выводит отчёт по всем элементам форм.
Пользоваться ей очень просто.
Пример.
Код:
;~ Example 1
;~ Запись отчёта в консоль (скрытые элементы выводятся)
#include <IE.au3>
$oIE = _IECreate("http://autoitscript.com")
$sOut = _IEForm_Inspector($oIE)
If @extended Then
ShellExecute("notepad.exe", $sOut, @WindowsDir, "open")
Else
ConsoleWrite($sOut)
EndIf
;~ Example 2
;~ Запись отчёта в файл 'odnoklasniki_ru.log' (скрытые элементы не выводятся)
#include <IE.au3>
$oIE = _IECreate("http://odnoklasniki.ru")
$sOut = _IEForm_Inspector($oIE, @ScriptDir, 1)
If @extended Then
ShellExecute("notepad.exe", $sOut, @WindowsDir, "open")
Else
ConsoleWrite($sOut)
EndIf
Функция
Код:
; #FUNCTION# ====================================================================================================================
; language ......: en_EN
; Name...........: _IEForm_Inspector
; Description....: The function parses the form on a Web Site
; Syntax.........: _IEForm_Inspector( $h_Obj [$s_Path, [$i_Hidden]])
; Parameters.....: $h_Obj - IWebBrowser2 Interface
; $s_Path - The path to write a report to a file.
; $i_Hidden - Show hidden form elements 1 - yes / 0 - (default) no
; Return values..: Success - Returns a report in text format (the output of the report depends on the parameter $ s_Path)
; Failure - None
; Author.........: Garrett
; Modified.......: None
; Remarks........: @extended - A pointer to the creation of log file 1 - yes / 0 - no
; Related........: None
; Link...........: None
; Example........: Yes
; ===============================================================================================================================
#Region Russian Annotation
; #FUNCTION# ====================================================================================================================
; language ......: ru_RU
; Name...........: _IEForm_Inspector
; Description....: Функция анализирует формы на странице веб сайта
; Syntax.........: _IEForm_Inspector( $h_Obj [$s_Path, [$i_Hidden]])
; Parameters.....: $h_Obj - Интерфейс IWebBrowser2
; $s_Path - Путь для записи отчёта в файл.
; $i_Hidden - Показать скрытые элементы форм 1 - да / 0 - (default) нет
; Return values..: Success - Возвращает отчёт в текстовом виде (вывод отчёта зависит от параметра $s_Path)
; Failure - None
; Author.........: Garrett
; Modified.......: None
; Remarks........: @extended - Указатель на создание log файла 1 - да / 0 - нет
; Related........: None
; Link...........: None
; Example........: Yes
; ===============================================================================================================================
#EndRegion Russian Annotation
Func _IEForm_Inspector($h_Obj, $s_Path = "", $i_Hidden = 0)
Local $s_AppTitle = "Inspector web forms"
Local $s_Version = "1.0"
Local $i = 0, $ii = 0, $iii = 0, $s_TextOut = "", $a_Forms[1][5]
Local $s_URL = _IEPropertyGet($h_Obj, "locationurl")
$o_Forms = _IEFormGetCollection($h_Obj)
$i_AllForms = @extended
$s_TextOut &= "; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" & @CRLF
$s_TextOut &= "; " & @CRLF
$s_TextOut &= "; " & @TAB & "Отчёт по сайту " & $s_URL & @CRLF
$s_TextOut &= "; " & @CRLF
$s_TextOut &= "; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" & @CRLF
$s_TextOut &= @CRLF
$s_TextOut &= @TAB & "; Всего найдено форм: " & $i_AllForms & @CRLF
$s_TextOut &= @CRLF
For $o_Form in $o_Forms
$s_TextOut &= "; Форма: #" & $i+1 & @CRLF & @CRLF
$s_TextOut &= $o_Form.tagName & @TAB & "[index -> " & $i & "]" & @CRLF
If $o_Form.id <> "" Then $s_TextOut &= @TAB & "[id -> " & $o_Form.id & "]" & @CRLF
If $o_Form.name <> "" Then $s_TextOut &= @TAB & "[name -> " & $o_Form.name & "]" & @CRLF
$s_TextOut &= @CRLF
$o_Elements = _IEFormElementGetCollection($o_Form)
$s_TextOut &= @TAB & "; Элементов в форме: " & @extended & @CRLF & @CRLF
For $o_Element in $o_Elements
If $i_Hidden And $o_Element.type = "hidden" Then
$s_TextOut &= @TAB & "( " & $o_Element.tagName & " ) " & @CRLF
$s_TextOut &= @TAB & "[index -> " & $iii & "]" & @CRLF
$s_TextOut &= @TAB & "; Элемент скрыт" & @CRLF
$s_TextOut &= @CRLF
Else
If $o_Element.tagName <> "select" Then
$s_TextOut &= @TAB & "( " & $o_Element.tagName & " ) " & @CRLF
$s_TextOut &= @TAB & "[index -> " & $iii & "]" & @CRLF
If $o_Element.type <> "" Then $s_TextOut &= @TAB & "[type -> " & $o_Element.type & "]" & @CRLF
If $o_Element.id <> "" Then $s_TextOut &= @TAB & "[id -> " & $o_Element.id & "]" & @CRLF
If $o_Element.name <> "" Then $s_TextOut &= @TAB & "[name -> " & $o_Element.name & "]" & @CRLF
If $o_Element.tagName <> "object" And $o_Element.value <> "" Then $s_TextOut &= @TAB & "[value -> " & $o_Element.value & "]" & @CRLF
$s_TextOut &= @CRLF
Else
$s_TextOut &= @TAB & "( " & $o_Element.tagName & " ) " & @CRLF
$s_TextOut &= @TAB & "[index -> " & $iii & "]" & @CRLF
If $o_Element.type <> "" Then $s_TextOut &= @TAB & "[type -> " & $o_Element.type & "]" & @CRLF
If $o_Element.id <> "" Then $s_TextOut &= @TAB & "[id -> " & $o_Element.id & "]" & @CRLF
If $o_Element.name <> "" Then $s_TextOut &= @TAB & "[name -> " & $o_Element.name & "]" & @CRLF
If $o_Element.value <> "" Then $s_TextOut &= @TAB & "[value -> " & $o_Element.value & "]" & @CRLF
For $s = 0 To $o_Element.options.length -1
If $o_Element.options.selectedIndex = $s Then
$s_TextOut &= @TAB & "[" & $o_Element.options.item($s).tagName & " index -> " & $s & "]" & @CRLF
$s_TextOut &= @TAB & "[value SELECTED = " & $o_Element.options.item($s).value & " -> text SELECTED = " & $o_Element.options.item($s).text & "]" & @CRLF
Else
$s_TextOut &= @TAB & "[" & $o_Element.options.item($s).tagName & " index -> " & $s & "]" & @CRLF
$s_TextOut &= @TAB & "[value = " & $o_Element.options.item($s).value & " -> text = " & $o_Element.options.item($s).text & "]" & @CRLF
EndIf
Next
$s_TextOut &= @CRLF
EndIf
$ii += 1
EndIf
$iii += 1
Next
$iii = 0
$ii = 0
$i += 1
Next
If $s_Path <> "" Then
If StringRight($s_Path, 1) <> "\" Then $s_Path &= "\"
If Not FileExists($s_Path) Then DirCreate($s_Path)
Local $s_FilePath = $s_Path & StringReplace(StringRegExpReplace($s_URL, "http://.*?\.(.*?)?/.*", "$1"), ".", "_") & ".log"
$h_File = FileOpen($s_FilePath, 2)
FileWrite($h_File, StringReplace($s_TextOut, @CRLF, "", -1))
FileClose($h_File)
Return SetExtended(1, $s_FilePath)
Else
Return SetExtended(0, $s_TextOut)
EndIf
EndFunc; ==>_IEForm_Inspector