Что нового

[Автоматизация] Проверка и сохранение баланса Qiwi с последующим выходом из кошелька

Leonid Feclichev

Новичок
Сообщения
3
Репутация
1
Доброго времени суток!
Собственно для нужд понадобился скрипт для проверки баланса кошельков Qiwi. Не могу разобраться как скопировать значение баланса в текстовой документ. Бился долго, пересмотрел примеры, но так и не смог достичь результата. Само значение (100 баланс кошелька):

Код:
<div class="account_current_amount">
                100
                                <span class="account_currency_RUB">Р
                                    <span class="tick"></span>
                                </span>
            </div>

Также не смог разобраться как выйти из кошелька:

Код:
<div class="logout">
                <a href="#" data-action="logout">
                    Выйти
                </a>
            </div>

Буду рад любой помощи, сам скрипт:

Код:
#RequireAdmin
#include <IE.au3>
#include <MsgBoxConstants.au3>

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$telephone_1 = "телефон"
$telephone_2 = "телефон"
$telephone_password_1 = "пароль"
$telephone_password_2 = "пароль"

IE_Kill()
$oIE = _IECreate("https://www.qiwi.com")
WinSetState("[CLASS:IEFrame]", "", @SW_MAXIMIZE)

Local $i = 0
Do
   $i = $i + 1
	  Start_1()
	  Start_2()
Until $i = 1

Exit

Func Start_1()
   If StringInStr(_IEBodyReadHTML($oIE), ">Войти в мой кошелек</div>") > 0 Then
	  $oPhone = _IEGetObjById($oIE, "phone")
	  $oPassword = _IEGetObjByName($oIE, "password")
	  $oButtonLogin = _IETagNameGetCollection($oIE, "button", 0)
	  _IEFormElementSetValue($oPhone, $telephone_1)
	  _IEFormElementSetValue($oPassword, $telephone_password_1)
	  _IEAction($oButtonLogin, "click")
	  Sleep(5000)
   EndIf

   ;~ Функция проверки и сохранения баланса кошелька в текстовой документ.
   ;~ Выход из кошелька.

EndFunc

Func Start_2()
   If StringInStr(_IEBodyReadHTML($oIE), ">Войти в мой кошелек</div>") > 0 Then
	  $oPhone = _IEGetObjById($oIE, "phone")
	  $oPassword = _IEGetObjByName($oIE, "password")
	  $oButtonLogin = _IETagNameGetCollection($oIE, "button", 0)
	  _IEFormElementSetValue($oPhone, $telephone_2)
	  _IEFormElementSetValue($oPassword, $telephone_password_2)
	  _IEAction($oButtonLogin, "click")
	  Sleep(5000)
   EndIf

   ;~ Функция проверки и сохранения баланса кошелька в текстовой документ. Дописать полученное значение после первого.
   ;~ Выход из кошелька.

EndFunc

Func IE_Kill()
   TrayTip("Инфо", "Убиваем процессы IE", 5, 1)
	  WinMinimizeAll()
	  $PIDs = ProcessList('iexplore.exe')
	  For $i = 1 To $PIDs[0][0]
		 If ProcessExists($PIDs[$i][1]) Then ProcessClose($PIDs[$i][1])
		 Next
   Sleep(5000)
EndFunc

Func TogglePause()
   $Paused = Not $Paused
   While $Paused
      Sleep(100)
	  TrayTip("Инфо", "Скрипт приостановлен", 50, 1)
   WEnd
   ToolTip("")
EndFunc

Func Terminate()
   Exit 0
 EndFunc
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
OffTopic:
Что-то код знакомый... Уж не скопирован ли он отсюда? :D :smile:


Leonid Feclichev [?]
как скопировать значение баланса
Код для получения баланса: ( он будет находиться в переменной $amount )
Код:
$oDivs = _IETagNameGetCollection($oIE, "div")
If IsObj($oDivs) Then
For $oDiv In $oDivs
If StringInStr($oDiv.className, "account_current_amount") > 0 Then
$amount = StringStripWS($oDiv.innerTEXT, 4)
ConsoleWrite("amount: "&$amount&@CRLF)
ExitLoop
EndIf
Next
EndIf

Также не смог разобраться как выйти из кошелька
Легко. Код для выхода:
Код:
$oLinks = _IETagNameGetCollection($oIE, "a")
If IsObj($oLinks) Then
For $oLink In $oLinks
If StringStripWS($oLink.innerTEXT, 8) = "Выйти" Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
EndIf
Все коды проверял, у меня они работают.
 
Автор
L

Leonid Feclichev

Новичок
Сообщения
3
Репутация
1
alex33 :smile:

Благодарю, все получилось! Готовый скрипт выкладываю. Сделал массив с добавлением даты проверки.

Код:
#RequireAdmin
#include <IE.au3>

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$LogFile = @DesktopDir & "\QIWI.txt"
$hFile = FileOpen($LogFile, 1)
FileWriteLine($LogFile, "" & @LF & @YEAR & "/" & @MON & "/" & @MDAY  & " " & @HOUR & ":" & @MIN & ":" & @SEC & @LF & "")

Global $aTelephone[] = [ _
'Номер телефона', _
'Номер телефона', _
'Номер телефона' _
]

Global $aTelephone_password[] = [ _
'Пароль от кабинета', _
'Пароль от кабинета', _
'Пароль от кабинета' _
]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IE_Kill()
$oIE = _IECreate("https://www.qiwi.com")
WinSetState("[CLASS:IEFrame]", "", @SW_MAXIMIZE)

For $i = 0 To UBound($aTelephone) - 1
   Start()
Next

FileClose($LogFile)
IE_Kill()

Func Start()
   TrayTip("Инфо", "Запуск авторизации", 5, 1)
   If StringInStr(_IEBodyReadHTML($oIE), ">Войти в мой кошелек</div>") > 0 Then
   $oPhone = _IEGetObjById($oIE, "phone")
   $oPassword = _IEGetObjByName($oIE, "password")
   $oButtonLogin = _IETagNameGetCollection($oIE, "button", 0)
	  TrayTip("Инфо", "Ввод номера ( " & $aTelephone[$i] &" )", 5, 1)
   _IEFormElementSetValue($oPhone, $aTelephone[$i])
	  Sleep(1000)
	  TrayTip("Инфо", "Ввод пароля кошелька", 5, 1)
   _IEFormElementSetValue($oPassword, $aTelephone_password[$i])
	  Sleep(1000)
	  TrayTip("Инфо", "Входим в кошелек ( " & $aTelephone[$i] &" )", 5, 1)
   _IEAction($oButtonLogin, "click")
   	  Sleep(1000)
   EndIf
	  TrayTip("Инфо", "Проверяем баланс ( " & $aTelephone[$i] &" )", 5, 1)
	  Sleep(1000)
   $oDivs = _IETagNameGetCollection($oIE, "div")
	  If IsObj($oDivs) Then
		 For $oDiv In $oDivs
			If StringInStr($oDiv.className, "account_current_amount") > 0 Then
			$amount = StringStripWS($oDiv.innerTEXT, 4)
			   TrayTip("Инфо", "Сохраняем баланс ( " & $aTelephone[$i] &" )", 5, 1)
			FileWriteLine($LogFile, "Счет Qiwi: "& $aTelephone[$i] & " - " &$amount&@CRLF)
			ExitLoop
			EndIf
		Next
	  EndIf
   Sleep(1000)
   TrayTip("Инфо", "Выходим из кошелька ( " & $aTelephone[$i] &" )", 5, 1)
   $oLinks = _IETagNameGetCollection($oIE, "a")
	  If IsObj($oLinks) Then
		 For $oLink In $oLinks
			If StringStripWS($oLink.innerTEXT, 8) = "Выйти" Then
			_IEAction($oLink, "click")
			ExitLoop
			EndIf
		 Next
	  EndIf
   Sleep(3000)
EndFunc

Func IE_Kill()
   TrayTip("Инфо", "Убиваем процессы IE", 5, 1)
	  WinMinimizeAll()
	  $PIDs = ProcessList('iexplore.exe')
	  For $i = 1 To $PIDs[0][0]
		 If ProcessExists($PIDs[$i][1]) Then ProcessClose($PIDs[$i][1])
		 Next
   Sleep(3000)
EndFunc

Func TogglePause()
   $Paused = Not $Paused
   While $Paused
      Sleep(100)
	  TrayTip("Инфо", "Скрипт приостановлен", 50, 1)
   WEnd
   ToolTip("")
EndFunc

Func Terminate()
   Exit 0
 EndFunc
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Leonid Feclichev,
кстати для логирования есть функция
Код:
_FileWriteLog



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

А так файл открывать лучше:
Код:
$LogFile = @DesktopDir & "\QIWI.txt"
$hFile = FileOpen($LogFile, 1)
 
Верх