DOMINANT
Новичок
- Сообщения
- 42
- Репутация
- 0
Версия AutoIt: 3.3.14.2
Описание:
Скрипт исправно работал, подключался к базе товаров /база_товаров.xlsx, брал оттуда названия изображений, искал их в папке /img , с недавних пор в Windows 10, в IE11 начала выходить ошибка следующего вида
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
>Exit code: 2 Time: 3.741
Сам скрипт:
Примечания:
Во вложении прикрепил файл с базой товаров для примера, и изображения
Описание:
Скрипт исправно работал, подключался к базе товаров /база_товаров.xlsx, брал оттуда названия изображений, искал их в папке /img , с недавних пор в Windows 10, в IE11 начала выходить ошибка следующего вида
--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
>Exit code: 2 Time: 3.741
Сам скрипт:
Код:
Opt("TrayIconDebug", 1)
#include <Array.au3>; подключаем библиотеку для работы с массивами
#include <File.au3>; подключаем библиотеку для работы с файлами
#include <IE.au3>; подключаем библиотеку для работы с браузером IE
#include <Excel.au3>; подключаем библиотеку для работы с Excel
Local $tmp, $arr, $oIE, $aFiles, $sImageFilePath, $oTextareas, $oButtons, $oDiv, $oPhotos_add_s_caption, $oDivs, $iFlag = 0; переменные
Local $sConfigFilePath = @UserProfileDir & "\vk_photos_album_config.ini"; путь к конфигурационному файлу
Local $sPathXL = @ScriptDir & "\XLSX_женская.xlsx"; путь к Excel файлу с данными о товарах
Local $sPathImages = @ScriptDir & "\img"; папка, где искать изображения
_Excel_BookReadToArray($sPathXL, $arr, 20); читаем только первые 20 элементов для скорости и для теста
If @error Then Exit 1
;_ArrayDisplay($arr)
_IELoadWaitTimeout(10000)
$oIE = _IECreate("http://vk.com/")
If @error Or Not IsObj($oIE) Then Exit 2
$tmp = IniRead($sConfigFilePath, "config", "line", "0")
If (Not StringIsDigit($tmp)) Or ($tmp > UBound($arr)) Or ($tmp < 1) Then $tmp = 0
If $tmp > 0 Then $tmp += 1
Local $str = ""
For $i = $tmp To UBound($arr) - 1
ConsoleWrite("For#" & $i & "/" & UBound($arr) & @CRLF)
$str = StringFormat("Название: %s\r\n Артикул: %s\r\n Размеры: %s\r\n Цена: %s", $arr[$i][2], $arr[$i][3], $arr[$i][4], $arr[$i][5])
ConsoleWrite($str & @CRLF)
If StringInStr($arr[$i][0], "http") = 0 Then ContinueLoop
Sleep(1000)
$aFiles = _FileListToArrayRec($sPathImages, $arr[$i][1], $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Or Not IsArray($aFiles) Then ContinueLoop
$sImageFilePath = ""
If $aFiles[0] < 1 Then ContinueLoop
For $f = 1 To $aFiles[0]
If Not StringInStr($aFiles[$f], '"') Then
$sImageFilePath &= StringFormat('"%s"', $aFiles[$f]) & " "
Else
$sImageFilePath &= $aFiles[$f] & " "
EndIf
Next
_IENavigate($oIE, $arr[$i][0])
Sleep(500)
;_ArrayDisplay($aFiles,"files#"&$i)
_IENavigate($oIE, 'javascript:document.getElementById("photos_upload_area").click();void(0);', 0)
$hWin = WinWait("[TITLE:Выбор выкладываемого файла; CLASS:#32770]", "", 10)
If Not $hWin Then ContinueLoop
ControlFocus($hWin, "", "Edit1")
Sleep(500)
ControlSetText($hWin, "", "Edit1", $sImageFilePath)
Sleep(500)
ControlFocus($hWin, "", "Button1")
Sleep(500)
ControlClick($hWin, "", "Button1", "main", 1)
ConsoleWrite("Selected files: " & $sImageFilePath & @CRLF)
WinWaitNotActive($hWin, "", 2)
While 1
Sleep(500)
$oDiv = $oIE.document.getElementById("photos_add_bar_progress")
If IsObj($oDiv) Then
ConsoleWrite("div_css_display" & @TAB & $oDiv.style.display & @CRLF)
If $oDiv.style.display = "none" Then ExitLoop
EndIf
WEnd
Do
Sleep(500)
$oTextareas = $oIE.document.getElementsByTagName("textarea")
If Not IsObj($oTextareas) Then ContinueLoop
$oPhotos_add_s_caption = 0
For $oTextarea In $oTextareas
ConsoleWrite("$oTextarea.className" & @TAB & $oTextarea.className & @TAB & @TAB & "$oTextarea.id" & @TAB & $oTextarea.id & @CRLF)
If $oTextarea.className = "photos_add_s_caption" Then
$oPhotos_add_s_caption = $oTextarea
_IEAction($oPhotos_add_s_caption, "focus")
Sleep(100)
_IEFormElementSetValue($oPhotos_add_s_caption, $str)
Sleep(100)
_IEAction($oPhotos_add_s_caption, "blur")
;ExitLoop
EndIf
Next
Until IsObj($oPhotos_add_s_caption)
Do
Sleep(500)
$oButtons = $oIE.document.getElementsByTagName("button")
If Not IsObj($oButtons) Then ContinueLoop
For $oButton In $oButtons
If $oButton.innerHTML = "Сохранить фотографии" Or $oButton.className = "flat_button" Then
_IEAction($oButton, "focus")
Sleep(500)
_IEAction($oButton, "click")
ExitLoop
EndIf
Next
Until IsObj($oButtons)
$iFlag = 0
Do
Sleep(500)
$oDivs = $oIE.document.getElementsByTagName("div")
If Not IsObj($oDivs) Then ExitLoop
For $oDiv In $oDivs
If StringInStr($oDiv.id, "photo_save_result-") Then
$iFlag = 1
ExitLoop
EndIf
Next
Until $iFlag = 0
ConsoleWrite("Save OK" & @CRLF)
IniWrite($sConfigFilePath, "config", "line", $i)
ConsoleWrite("----------" & @CRLF)
Next
_IEQuit($oIE)
Func _Excel_BookReadToArray($_sPath, ByRef $_aArray, $iLimit = 0)
If Not FileExists($_sPath) Then Return SetError(1, 0, 0)
Local $_sCSV = @TempDir & "\xl" & Random(111111, 999999, 1) & ".tmp.csv"
If Not StringIsDigit($iLimit) Then $iLimit = 0
Local $oAppl = _Excel_Open(False)
If @error Then Return SetError(2, 0, 0)
Local $oWorkbook = _Excel_BookOpen($oAppl, $_sPath)
If @error Then
_Excel_Close($oAppl)
Return SetError(3, 0, 0)
EndIf
Dim $_aArray[0][0]
_Excel_BookSaveAs($oWorkbook, $_sCSV, $xlTextWindows, True, Default, Default, True)
If @error Then Return SetError(4, 0, 0)
_Excel_Close($oAppl)
Local $aRows
Local $hFile = FileOpen($_sCSV), $sLine = "", $sLines = "", $c = 0
If $hFile = -1 Then Return SetError(5, 0, 0)
$sLines = ""
While 1
$sLine = FileReadLine($hFile)
If @error Then ExitLoop
$sLine = StringReplace($sLine, '"', '')
$sLines &= $sLine & @CRLF
If ($iLimit > 0) And (($c + 1) >= $iLimit) Then ExitLoop
$c += 1
WEnd
FileClose($hFile)
$hFile = FileOpen($_sCSV, 2)
If $hFile = -1 Then Return SetError(6, 0, 0)
FileWrite($hFile, $sLines)
FileClose($hFile)
_FileReadToArray($_sCSV, $aRows, $FRTA_NOCOUNT, @TAB)
If $hFile = -1 Then Return SetError(7, 0, 0)
FileDelete($_sCSV)
$_aArray = $aRows
Return 1
EndFunc ;==>_Excel_BookReadToArray
Примечания:
Во вложении прикрепил файл с базой товаров для примера, и изображения