Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Ищу русскую справку по AutoIT по функциям IEx (http://forum.oszone.net/showthread.php?t=143622)

ZeroCrash 27-06-2009 14:21 1153046

Ищу русскую справку по AutoIT по функциям IEx
 
В популярной русскоязычной справке по AutoIT версии 3.2.5.4 с официального сайта раздел по IE англоязычный :( Есть ли какая-нибудь русская справка по IE?

Заранее благодарен!

proxy 27-06-2009 16:33 1153137

Русской справки по этим функциям нет, по крайне мере, не встречал.
Можно сюда писать функции, в описание которых неразобрался, помогу...да и многие другие думаю то же :)
Или стучи в icq (номер в профиле).

ZeroCrash 27-06-2009 16:56 1153153

Ок.
Спасибо! Как только освобожусь - сразу напишу!

ZeroCrash 29-06-2009 21:30 1155000

При выполнении этой команды:
Код:

#include <IE.au3>
$file_1 = FileOpen ( "1.txt", 0)
$First = FileReadLine ($file_1, 4)
$Last = FileReadLine ($file_1, 3)
FileClose ($file_1)
$oFirst1 =_IEGetObjByName($oIE, "CustomFields[63]")
$oLast1 =_IEGetObjByName($oIE,"CustomFields[64]")
_IEFormElementSetValue ($oFirst1, $First)
_IEFormElementSetValue ($oLast1, $Last)

Возникает ошибка:
Код:

--> IE.au3 V2.4-0 Warning from function _IEGetObjByName, $_IEStatus_NoMatch (Name: CustomFields[63], Index: 0)
--> IE.au3 V2.4-0 Warning from function _IEGetObjByName, $_IEStatus_NoMatch (Name: CustomFields[64], Index: 0)
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

Пробовал добавлять Index 0 и Index 1 но результат одинаковый.

Чего не хватает?

SyDr 29-06-2009 21:42 1155009

1) _IEGetObjByName() не нашла совпадений
2) _IEGetObjByName() не нашла совпадений
3) Неправильный тип объекта для _IEFormElementSetValue
4) Неправильный тип объекта для _IEFormElementSetValue

ZeroCrash 29-06-2009 21:54 1155016

Sylver Dragon, спасибо, но проблему я так и не смог решить :(

Вот код поля в IE, в которое нужно вставить текст:
Код:

<input id="CustomFields_63_26" class="inputbox" type="text" value="" name="CustomFields[63]"/>
Я думаю стоит попробовать вставить "id" этого поля, пробовал ставить вместо "CustomFields[63]" "CustomFields_63_26", но ничего не вышло :(
Как нужно сделать?

ZeroCrash 30-06-2009 11:53 1155339

Кто-нибудь расскажите поподробней об этих функциях:
Код:

_IEGetObjByName()
_IEFormElementSetValue()

И чем их можно заменить????

SyDr 30-06-2009 12:19 1155360

_IEGetObjByName ( ByRef $o_object, $s_Id [, $i_index = 0] )

В качестве объекта не может выступать текст. Другими словами ты не должен был читать файл. Тебе надо было открыть его как адрес в интернете с помощью _IECreate.

_IEFormElementSetValue ( ByRef $o_object, $s_newvalue [, $f_fireEvent = 1] )
Первым параметром должен выступать объект. Получить можно с помощью _IEFormElementGetX (В зависимости от ситуации).

proxy 30-06-2009 20:09 1155762

#include <IE.au3>
_IEGetObjByName ( ByRef $o_object, $s_Id [, $i_index = 0] )

$o_object: Переменная, которая сожержить указатель на объект InternetExplorer.Application, окно, или объект фрейм.
$s_Id: Определенное имя или ID объекта, который желаете найти
$i_index: опционально: Если имя или ID объекта встречается более одного раза, можно указать номер необходимого экземпляра объекта (отсчет начниется с 0). 0 (по умолчанию) или положительное целое число возвращают указаетль на экземпляр объекта. -1 возвращает колекцию (список) найденных объектов.

Возвращаемое значение:
Успех: Возвращается объект - указаетль на искомый объект/ы, @Extended = содержит колличество возвращаемых объектов
Неуспех (сбойу, крах): Возвращается 0 и устанавливается @Error
@Error: 0 ($ _IEStatus_Success) = Нет ошибок
3 ($ _IEStatus_InvalidDataType) = Неправильный тип данных
7 ($ _IEStatus_NoMatch) = Нет совпадений
@Extended: Содержит номер ошибочного (неправильного) параметра

Примечание:
Эта функция возвращает объект - указаетль(ссылку) на какой-либо объект в документе с указанным иминем или ID. DOM элементы могут иметь имя или ID атрибуты или все сразу. Указанный ID может быть сопоставлен только с одиним элементом, а указанное имя может быть сопоставленно с несколькими элементами. В Internet Explorer, имя и ID пространство имен являются общим.


----------------------------------------------------------------------------------------

#include <IE.au3>
_IEFormElementSetValue ( ByRef $o_object, $s_newvalue [, $f_fireEvent = 1] )

$o_object: Переменная, которая сожержить указатель на объект InternetExplorer.Application, объект элемента Form.
$s_newvalue: Новое значение, котрое будет назначенно (установленно) элементу Form.
$f_fireEvent: опционально: Указывает, вызывать ли событие OnChange после изменения значения
0 = Не вызывать событие OnChange или OnClick после изменения значения
1 = (по умолчанию) Вызывать событие OnChange и OnClick после изменения значения

Возвращаемое значение:
Успех: Возвращается 1
Неуспех (сбойу, крах): Возвращается 0 и устанавливается @Error
@Error: 0 ($ _IEStatus_Success) = Нет ошибок
3 ($ _IEStatus_InvalidDataType) = Неправильный тип данных
4 ($ _IEStatus_InvalidObjectType) = Неправильный тип объекта
@Extended: Содержит номер ошибочного (неправильного) параметра


Примечание:
Хотя все Form элементы имеют значение, только текстовые (текст ориентированные) элементы используют значение их (Form элементов) атрибута в явном виде (тип text, textarea, hidden, password и file). Значение других Form элементов не влияет на то, что отображается в пользовательском интерфейсе, даже если элемент возвращает значение, когда он выбран или активен.

См. _IEFormElementOptionSelect, _IEFormElementCheckboxSelect, _IEFormElementRadioSelect и _IEFormImageClick для получения более подробной информации.

Примечание: Неполучится использовать _IEFormElementSetValue, чтобы установить значение INPUT TYPE=FILE элемента. Ограничения безопасности браузера остановят выполнение сценария (для) этого элемента. См. пример ниже для понимания(?).

proxy 30-06-2009 20:32 1155793

в этом примере:
Цитата:

Цитата ZeroCrash
#include <IE.au3>
$file_1 = FileOpen ( "1.txt", 0)
$First = FileReadLine ($file_1, 4)
$Last = FileReadLine ($file_1, 3)
FileClose ($file_1)
$oFirst1 =_IEGetObjByName($oIE, "CustomFields[63]")
$oLast1 =_IEGetObjByName($oIE,"CustomFields[64]")
_IEFormElementSetValue ($oFirst1, $First)
_IEFormElementSetValue ($oLast1, $Last) »

есть ошибка - где объект $oIE ?? :)

Цитата:

Цитата ZeroCrash
Я думаю стоит попробовать вставить "id" этого поля, пробовал ставить вместо "CustomFields[63]" "CustomFields_63_26", но ничего не вышло »

уммммммм, зачем?

Цитата:

Цитата ZeroCrash
И чем их можно заменить???? »

их не надо заменять, надо объект InternetExplorer.Application внести в код....в примерах справки, для той же _IEGetObjByName, он есть.
Посмотри, подумай.....

ZeroCrash 30-06-2009 20:41 1155807

proxy, спасибо, буду думать!

ZeroCrash 30-06-2009 22:25 1155900

Код:

#include <IE.au3>
$oIE = _IECreate ("http://название_сайта")
$file_1 = FileOpen ( "1.txt", 0)
$First = FileReadLine ($file_1, 4)
$Last = FileReadLine ($file_1, 3)
FileClose ($file_1)
$oFirst1 =_IEGetObjByName($oIE, "CustomFields[63]")
$oLast1 =_IEGetObjByName($oIE,"CustomFields[64]")
_IEFormElementSetValue ($oFirst1, $First)
_IEFormElementSetValue ($oLast1, $Last)

Я почему-то удалил фрагмент выделенный жирным текстом в прошлом примере. Вот такой у меня код и имена полей я точно ввёл безошибочно....
Или я что-то опять упустил?)

SyDr 30-06-2009 22:36 1155913

$i_index: опционально: Если имя или ID объекта встречается более одного раза, можно указать номер необходимого экземпляра объекта (отсчет начниется с 0). 0 (по умолчанию) или положительное целое число возвращают указаетль на экземпляр объекта. -1 возвращает колекцию (список) найденных объектов.

То есть возвращается не объект, а список (коллекция, множество) объектов.
Попробуй _IEFormElementSetValue ($oFirst1, $First, 0)

ZeroCrash 30-06-2009 22:39 1155918

Цитата:

Цитата Sylver Dragon
То есть возвращается не объект, а список (коллекция, множество) объектов.
Попробуй _IEFormElementSetValue ($oFirst1, $First, 0) »

Это я уже пробовал....

ZeroCrash 30-06-2009 22:54 1155930

В справке приводятся одинаковые примеры по функциям _IEFormElementGetObjByName и _IEFormGetObjByName:
Код:

#include <IE.au3> $oIE = _IECreate ("http://www.google.com") $oForm = _IEFormGetObjByName ($oIE, "f") $oQuery = _IEFormElementGetObjByName ($oForm, "q") _IEFormElementSetValue ($oQuery, "AutoIt IE.au3") _IEFormSubmit ($oForm)
В функции _IEFormGetObjByName ($oIE, "f") не могу понять к какому элементу относится "f" ?
Для поиска имён я в мозиле использую плагин Firebug, но не нашёл к чему это могло бы относится.....
И как работает связка $oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery = _IEFormElementGetObjByName ($oForm, "q")

Может, если вы мне это объясните, то я уже глубже вникну что здесь к чему :cool:

Belfigor 30-06-2009 23:00 1155932

_IEFormGetObjByName ( ByRef $o_object, $s_name [, $i_index = 0] )
$s_name - Specifies the name of the Form you wish to match
Смысловой перевод звучит как: "Определяет название формы, которой вы желаете задать соответствие."

Мб тебе это поможет. Сам я с функциями работы с IE на вы общаюсь так что только переводом помочь могу :)

SyDr 30-06-2009 23:16 1155948

Форма поиска на Гугле имеет название f
Можете посмотреть исходный код старницы:
Код:

<form action="/search" name=f>



Сама строка поиска имеет название q
Исходный код:
Код:

<input autocomplete="off" maxlength=2048 name=q size=55 title="Поиск в Google" value="">



Таким образом, пример работает так:
Открывает страницу в IE
Находит форму с именем f. Получает ссылку (указатель) на неё.
В этой форме находит элемент с именем q. Получает указатель на неё.
Устанавливает значение на этот элемент и отсылает форму.



Пока писал, понял в чём ошибка
читать дальше »
Поле input ведь относится к какой-то форме. Так ведь? Дальше объяснить?

ZeroCrash 30-06-2009 23:48 1155971

Sylver Dragon,

Вот код формы:
Код:

<form id="frmSS26" onsubmit="return CheckForm26(this);" action="http://www.wedoitallvegas.com/sendstudionx/form.php?form=26" method="post">
<ul class="formRows"> <li class="clearLeft"> <label for="name">*First name:</label>
</li> <li class="input"> <input id="CustomFields_63_26" class="inputbox" type="text" value="" name="CustomFields[63]"/>
</li> <li class="clearLeft"> <label for="lastname">*Last name:</label>
</li> <li class="input"> <input id="CustomFields_64_26" class="inputbox" type="text" value="" name="CustomFields[64]"/>
</li> <li class="clearLeft"> <label for="playername">*FullTilt Player Name:</label>
</li> <li class="input"> <input id="CustomFields_20_26" class="inputbox" type="text" value="" name="CustomFields[20]"/>
</li> <li class="clearLeft"> <label for="emailaddress">*Your email address:</label>
</li> <li class="input"> <input class="inputbox" type="text" value="" name="email"/> </li> <li class="clearLeft"> <label for="birth">*Date of birth</label> </li> </ul> </form>

Как видно, все поля input относятся к одной форме, но имени формы нет, зато есть id.

Пробовал вот так:
Код:

#include <IE.au3> $oIE = _IECreate ("http://сайт")
$file_1 = FileOpen ( "1.txt", 0)
$First = FileReadLine ($file_1, 4)
FileClose ($file_1)
$oForm =_IEFormGetObjByName($oIE,"frmSS26")
$oQuery = _IEFormElementGetObjByName ($oForm, "CustomFields[63]")
_IEFormElementSetValue ($oQuery, $First)

Я не так тебя понял или что-то не так сделал?)

SyDr 01-07-2009 09:17 1156154

Ты пытаешься получить объект по его имени, используя при этом его ID
Используй $oForm =_IEGetObjById($oIE,"frmSS26") вместо $oForm =_IEFormGetObjByName($oIE,"frmSS26")

ZeroCrash 01-07-2009 10:57 1156212

Не выходит....вот ошибки:
Код:

--> IE.au3 V2.4-0 Warning from function _IEGetObjById, $_IEStatus_NoMatch (frmSS26)
--> IE.au3 V2.4-0 Error from function _IEGetObjById, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

Пробовал вместо $oQuery = _IEGetObjById($oForm, "CustomFields[63]")
подставить $oQuery = _IEFormElementGetObjByName($oForm, "CustomFields_63_26")
вылезает точно такая же ошибка......

РЕШИЛ ПРОБЛЕМУ!!! :)
Я вместо того чтобы открывать всю страницу, открыл только форму и вот такой скрипт прекрасно сработал:
Код:

#include <IE.au3>
$oIE = _IECreate ("http://имя сайта/iframeform.html")
$file_1 = FileOpen ( "1.txt", 0)
$First = FileReadLine ($file_1, 4)
FileClose ($file_1)
$oForm =_IEGetObjById($oIE,"frmSS26")
$oQuery = _IEGetObjByName($oForm, "CustomFields[63]")
_IEFormElementSetValue ($oQuery, $First)

Всем спасибо за помощь!
Но не факт что это уже всё :)


Время: 08:35.

Время: 08:35.
© OSzone.net 2001-