Автор Тема: Автоматизация Вставки/копирования/cохранения в файл текста со странички IE.  (Прочитано 4586 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Михаил [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 0
    • Награды
Версия AutoIt: v3.3.6.0

Описание:
Здравствуйте, столкнулся с проблемой автоматизации вставки/копирования текста со странички IE, через которую при отправлении сообщении получаем ответы необходимые для работы.
 Имеем:
 - папку A с  n-ым количеством файлов расширения *.txt содержащих тест например  (:1111:) , где внутри (: :) код сообщения.
 - WEB страничку "запросная система " с внутренними окнами "текст сообщения передачи" , "текст сообщения приема" и  в ней же кнопку "Выполнить" .
- папку B для хранения N-Го количества *.txt файлов с ответами, полученными после вствки сообщений например (:1111:) в WEB cтраничку "запросная система" после нажатия клавиши "Выполнить" .
 
Работает это все так :
1) Пользователь открывает текстовый файл из папки A
2) Копирует содержимое этого файла " (:1111:) "
3) Открывает WEB страничку запросная система
4) Копирует "(:1111:)" в окно "текст сообщения передачи" Web страницы
5) Нажимает в WEB странице на клавишу "Выполнить"
6) Ждет пару сек ответа от сервера, в окне WEB страницы "текст сообщения приема"  появляется текст например (:0497.....:)
7) Копирует полученное содержимое (:0497.....:)  файл *.txt созданный в папке B сохраняя его.
 Хотелось бы перед запуском WEB страницы видеть окно AUTOit , в котором были бы
- Путь к папке A, для чтения сообщений например 01.txt
- Путь к папке B для создания ответов на сообщения 011.txt
- Поле редактирования время задержки для получения ответов ( бывает ответ приходит в течении  5 сек)
- клавиша Выполнить :)
- что то может быть еще , чего я не знаю :)
Прошу помощи т.к вообще не получается реализовать данную проблему.


Примечания:

В архиве WEB.rar приложены необходимые файлы. :IL_AutoIt_1:
« Последнее редактирование: Август 02, 2011, 04:55:36 от Михаил »

Русское сообщество AutoIt


Оффлайн Михаил [?]

  • Новичок
  • *
  • Сообщений: 20

  • Автор темы
  • Репутация: 0
    • Награды
Что, никто не поможет ?   :'(

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Михаил,
Попробуйте так:
Код: AutoIt [Выделить]
#include <IE.au3>
#include <File.au3>

$sDir_Put = @ScriptDir & '\Put'
$sDir_Get = @ScriptDir & '\Get'
$sUrl = @ScriptDir & '\1.html';здесь Ваш реальный адрес

$aPut_Temp = _FileListToArray($sDir_Put, '*.txt', 1)
If @error Then
    MsgBox(16, 'Error', '_FileListToArray')
    Exit
EndIf
Dim $aPut[$aPut_Temp[0] + 1][2] = [[$aPut_Temp[0]]]
For $i = 1 To $aPut[0][0]
    $aPut[$i][0] = $aPut_Temp[$i]
    $hFileTemp = FileOpen($sDir_Put & '\' & $aPut_Temp[$i])
    If $hFileTemp = -1 Then ContinueLoop
    $aPut[$i][1] = FileRead($hFileTemp)
    FileClose($hFileTemp)
Next
$aPut_Temp = 0
For $i = 1 To 1
    $oIE = _IECreate($sUrl)
    If @error Then ExitLoop
    $oForm = _IEFormGetCollection($oIE, 0)
    If @error Then ExitLoop
    $oPut = _IEFormElementGetObjByName($oForm, 'par_text_put')
    If @error Then ExitLoop
    $oGet = _IEFormElementGetObjByName($oForm, 'par_text_get')
    If @error Then ExitLoop
Next
If @error Then
    _IEQuit($oIE)
    MsgBox(16, 'Error', @error)
    Exit
EndIf
For $i = 1 To $aPut[0][0]
    $hFileTemp = FileOpen($sDir_Get & '\get_' & $aPut[$i][0], 10)
    If $aPut[$i][1] Then
        For $j = 1 To 1
            _IEFormElementSetValue($oPut, $aPut[$i][1])
            If @error Then ExitLoop
            _IEFormSubmit($oForm)
            If @error Then ExitLoop
            $sGet = _IEFormElementGetValue($oGet)
            If @error Then ExitLoop
            If $sGet Then
                FileWrite($hFileTemp, $sGet)
            Else
                FileWrite($hFileTemp, 'Error')
            EndIf
        Next
        If @error Then
            FileWrite($hFileTemp, 'Error')
        EndIf
    Else
        FileWrite($hFileTemp, 'Error')
    EndIf
    FileClose($hFileTemp)
Next
_IEQuit($oIE)


Оффлайн Михаил [?]

  • Новичок
  • *
  • Сообщений: 20

  • Автор темы
  • Репутация: 0
    • Награды
Огромное спасибо за отклик ! Сейчас буду пробовать.

Русское сообщество AutoIt


Оффлайн Михаил [?]

  • Новичок
  • *
  • Сообщений: 20

  • Автор темы
  • Репутация: 0
    • Награды
Здравствуйте, уезжал в командировку , извеняюсь, по этому не мог длительное время написать:
Данный скрипт не корректно работет со страничкой IE. Выдает следующие ошибки -> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidObjectType
после добавления в тело скритпа :$o1Form = _IEFormGetCollection($oIE, 0)
         $oGet = _IEFormElementGetObjByName($o1Form, 'par_text_get')   
         $sGet = _IEFormElementGetValue($oGet)

в папке гет в файле get_01 появляется ответ.
(:0497 BЦ KЯP  1188014 25 08 09 38 001:
Ю1 0000 1111 001 000:), а во всех остальных файлах ERROR
Есть предположение, что переменнАя  $o1form должна меняться с каждым следующим запросом , как это реализовать я не знаю. 
Код: AutoIt [Выделить]
#include <IE.au3>
#include <File.au3>

$sDir_Put = @ScriptDir & '\Put'
$sDir_Get = @ScriptDir & '\Get'
$sUrl = 'http://mfd88.svrw.oao.rzd/aocarm/';здесь Ваш реальный адрес

$aPut_Temp = _FileListToArray($sDir_Put, '*.txt', 1)
If @error Then
    MsgBox(16, 'Error', '_FileListToArray')
    Exit
EndIf
Dim $aPut[$aPut_Temp[0] + 1][2] = [[$aPut_Temp[0]]]

For $i = 1 To $aPut[0][0]
    $aPut[$i][0] = $aPut_Temp[$i]
    $hFileTemp = FileOpen($sDir_Put & '\' & $aPut_Temp[$i])
    If $hFileTemp = -1 Then ContinueLoop
    $aPut[$i][1] = FileRead($hFileTemp)
    FileClose($hFileTemp)
Next

$aPut_Temp = 0
For $i = 1 To 1
    $oIE = _IECreate($sUrl)
    If @error Then ExitLoop
    $oForm = _IEFormGetCollection($oIE, 0)
    If @error Then ExitLoop
    $oPut = _IEFormElementGetObjByName($oForm, 'par_text_put')
    If @error Then ExitLoop
    ;$oGet = _IEFormElementGetObjByName($oForm, 'par_text_get')
    If @error Then ExitLoop
        ;msgbox(0,$oPut,$oForm)
Next
If @error Then
    _IEQuit($oIE)
    MsgBox(16, 'Error', @error)
    Exit
EndIf
For $i = 1 To $aPut[0][0]
    $hFileTemp = FileOpen($sDir_Get & '\get_' & $aPut[$i][0], 10)
    If $aPut[$i][1] Then
        For $j = 1 To 1
                    ;msgbox(0,$oPut,0)
sleep(3000)
           
        ;$o2Form = _IEFormGetCollection($oIE, 0)
        ;$oPut = _IEFormElementGetObjByName($o2Form, 'par_text_put')
           
            _IEFormElementSetValue($oPut, $aPut[$i][1])
                                ;msgbox(0,$aPut[$i][1],0)

            If @error Then ExitLoop
            _IEFormSubmit($oForm)
            If @error Then ExitLoop
            [spoiler][b]$o1Form = _IEFormGetCollection($oIE, 0)
            $oGet = _IEFormElementGetObjByName($o1Form, 'par_text_get')
            $sGet = _IEFormElementGetValue($oGet)[/b][/spoiler]
            If @error Then ExitLoop
            If $sGet Then
                FileWrite($hFileTemp, $sGet)
            Else
                FileWrite($hFileTemp, 'babar')
            EndIf
        Next
        If @error Then
            FileWrite($hFileTemp, 'Error')
        EndIf
    Else
        FileWrite($hFileTemp, 'Error')
    EndIf
    FileClose($hFileTemp)
Next
_IEQuit($oIE)
 

« Последнее редактирование: Август 31, 2011, 04:19:59 от Михаил »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитировать
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


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

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
4757 Просмотров
Последний ответ Ноябрь 20, 2010, 13:36:26
от gregaz
4 Ответов
2774 Просмотров
Последний ответ Март 10, 2011, 16:28:33
от madmasles
8 Ответов
5552 Просмотров
Последний ответ Ноябрь 05, 2011, 09:37:38
от StarEdik
5 Ответов
2458 Просмотров
Последний ответ Январь 21, 2012, 14:18:09
от Medic84
4 Ответов
2827 Просмотров
Последний ответ Март 27, 2012, 12:24:23
от XpycT
0 Ответов
4411 Просмотров
Последний ответ Июнь 08, 2012, 10:43:16
от vitalii01
5 Ответов
2026 Просмотров
Последний ответ Декабрь 03, 2013, 19:55:19
от firex
1 Ответов
1682 Просмотров
Последний ответ Февраль 11, 2014, 11:56:02
от WSWR
3 Ответов
1119 Просмотров
Последний ответ Октябрь 31, 2015, 21:41:56
от veretragna
1 Ответов
708 Просмотров
Последний ответ Август 03, 2016, 05:34:20
от joiner