Autoit не распознает функцию _StringBetween - PullRequest
0 голосов
/ 11 февраля 2019

Мой код дает сбой, заявляя, что _StringBetween не является распознанной функцией, даже если я определил правильный #include, который необходим.Он не падает на первом _StringBetween, но падает на следующем.Обе строки _StringBetween отображаются синим шрифтом в редакторе, подтверждая правильное написание и правильное количество параметров .... Я озадачен ...

См. Код ниже.Stack Exchange вынуждает меня добавить больше описания, так что вы можете перейти к разделу кода сейчас.

CODE:

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.14.5
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

;"C:\install\AutoIt3.exe" "C:\ArgsTest.au3" /argumentOne:MyFirstValue /argumentTwo:MySecondValue
#include <MsgBoxConstants.au3>
#include <IE.au3>
#include <Array.au3>
#include <Date.au3>
#include <String.au3>
#include <Excel.au3>
#include <WinAPIFiles.au3>


$BOL = 'HLCUEUR1810BCLY1'
$Tankno = '6001505'

$Link = "https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html"
$Link = $Link & "?blno=" & $BOL

;MsgBox($MB_ICONINFORMATION, "Tutorial", $BOL)


$file = fileopen(@scriptdir & "\HL3.txt", 10)
$IE = _IECreate($Link, 0, 1)

Sleep (200)
$source = _IEDocReadHTML($IE)
FileWrite($file, $source)



;extracting the value needed
$target_source = _StringBetween($source, $Tankno, '</tr>')
$year = _StringBetween(target_source[0],$Tankno, "-")
$year = StringRight($year,4)
$month = _StringBetween($target_source[0],$year & '-', '-')
$day = _StringBetween($target_source[0],$year & "-" & $month & "-","<")
$day = StringLeft($day,2)
$ETA = $year & $month & $day


MsgBox($MB_ICONINFORMATION, "Tutorial", $ETA)



;$target_source2 = _StringBetween($target_source[0], '<td', '/td>')
;$target_source3 = _StringBetween($target_source2[0], '>', '<')

;$USDEUR = $target_source3[0]

1 Ответ

0 голосов
/ 12 февраля 2019

Это не самый чистый подход, но это решение для получения значения года-месяца-дня для того, что вы ищете:

Улучшенный код:

#include-once
#include <Array.au3>
#include <Date.au3>
#include <Excel.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <String.au3>
#include <WinAPIFiles.au3>

$BOL    = 'HLCUEUR1810BCLY1'
$Tankno = '6001505'
$Link   = "https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html"
$Link   = $Link & "?blno=" & $BOL

$file   = fileopen(@ScriptDir & "\HL3.txt", 2 + 8)
$IE     = _IECreate($Link, 0, 1, 1, 1)

Sleep(2000)

$source = _IEDocReadHTML($IE)
FileWrite($file, $source)

$target_source = _StringBetween($source, $Tankno, '</tr>')
$aETA          = StringRegExp($target_source[0], '(\d{4})-(\d{2})-(\d{2})', 3)
_ArrayDisplay($aETA) ; this is optional (see array content)
$ETA           = $aETA[0] & $aETA[1] & $aETA[2]

MsgBox($MB_ICONINFORMATION, "Tutorial", $ETA)

Обратите внимание:

Ваша строка $year = _StringBetween(target_source[0],$Tankno, "-") неверна.Вы забыли $ как переменный индикатор для $ target_source .Так что функция _StringBetween() не была проблемой.Я решил отфильтровать $target_source с помощью выражения RegEx вместо того, чтобы снова использовать _StringBetween () для значения год-месяц-день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...