Что нового

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

Михаил

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

Описание:
Здравствуйте, столкнулся с проблемой автоматизации вставки/копирования текста со странички IE, через которую при отправлении сообщении получаем ответы необходимые для работы.
Имеем:
- папку A с n-ым количеством файлов расширения *.txt содержащих тест например :smile:1111:smile: , где внутри :smile: :smile: код сообщения.
- WEB страничку "запросная система " с внутренними окнами "текст сообщения передачи" , "текст сообщения приема" и в ней же кнопку "Выполнить" .
- папку B для хранения N-Го количества *.txt файлов с ответами, полученными после вствки сообщений например :smile:1111:smile: в WEB cтраничку "запросная система" после нажатия клавиши "Выполнить" .

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


Примечания:

В архиве WEB.rar приложены необходимые файлы. :IL_AutoIt_1:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Михаил,
Попробуйте так:
Код:
#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
Огромное спасибо за отклик ! Сейчас буду пробовать.
 
Автор
М

Михаил

Новичок
Сообщения
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 появляется ответ.
:smile:0497 BЦ KЯP 1188014 25 08 09 38 001:
Ю1 0000 1111 001 000:smile:, а во всех остальных файлах ERROR
Есть предположение, что переменнАя $o1form должна меняться с каждым следующим запросом , как это реализовать я не знаю.
Код:
#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)
 
Верх