如何将不断变化的网页存储在变量中?
How to store a changing webpage in a variable?
我的脚本在我的学校自动执行小组项目的房间预订过程。我创建了一个工作正常的自动登录脚本。现在我想访问加载页面中的不同元素(复选框、单选按钮...)。
如何从我登录的页面保存各种元素并对其执行某些操作?
Func SignIn()
Global $window = _IECreate("https://roombooking.au.dk/classes/Login.aspx? ReturnUrl=%2fclasses%2fbook.aspx")
_IELoadWait($window)
If @error Then Return
WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)
Local $username = _IEGetObjByName($window,"ctl00$Main$UsernameBox")
Local $password = _IEGetObjByName($window,"ctl00$Main$PasswordBox")
Local $button = _IEGetObjByName($window, "ctl00$Main$LoginBtn")
_IEFormElementSetValue($username,"abc")
_IEFormElementSetValue($password,"123")
_IEAction ($button, "click")
EndFunc
Func Room()
Local $SelectRoom = _IEGetObjByName(**???**,"ctl00$Main$ChangeReqsBtn")
_IELoadWait($bwindow)
_IEAction($s526,"click")
EndFunc
AutoIt 提供了许多不同的方法来 HTML 文档检索。不提供相关源码,只能猜测。
HTML 文档源由 _IEDocReadHTML() 返回(假设您使用的是 IE.au3 UDF)。示例:
#include <IE.au3>
Global Const $oIE = _IECreate('http://www.google.com/')
Global Const $sDocHTML = _IEDocReadHTML($oIE)
_IEQuit($oIE)
ConsoleWrite($sDocHTML & @LF)
Exit 0
提到的 UDF 包含将值设置为表单元素的函数(在 AutoIt's user defined function reference 中查找 _IEForm...())。
来自帮助文件:
#include <IE.au3>
_IEGetObjByName ( ByRef $oObject, $sName [, $iIndex = 0] )
$oObject InternetExplorer.Application、Window 或 Frame 对象的对象变量
$sName 指定要匹配的对象名称
$iIndex 如果 name 出现不止一次,则通过从 0 开始的索引指定实例
0(默认)或正整数 returns 索引实例
-1 returns 指定对象的集合
在您的情况下,代码将类似于:
Local $SelectRoom =
_IEGetObjByName($window,"ctl00$Main$ChangeReqsBtn")
我的脚本在我的学校自动执行小组项目的房间预订过程。我创建了一个工作正常的自动登录脚本。现在我想访问加载页面中的不同元素(复选框、单选按钮...)。
如何从我登录的页面保存各种元素并对其执行某些操作?
Func SignIn()
Global $window = _IECreate("https://roombooking.au.dk/classes/Login.aspx? ReturnUrl=%2fclasses%2fbook.aspx")
_IELoadWait($window)
If @error Then Return
WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)
Local $username = _IEGetObjByName($window,"ctl00$Main$UsernameBox")
Local $password = _IEGetObjByName($window,"ctl00$Main$PasswordBox")
Local $button = _IEGetObjByName($window, "ctl00$Main$LoginBtn")
_IEFormElementSetValue($username,"abc")
_IEFormElementSetValue($password,"123")
_IEAction ($button, "click")
EndFunc
Func Room()
Local $SelectRoom = _IEGetObjByName(**???**,"ctl00$Main$ChangeReqsBtn")
_IELoadWait($bwindow)
_IEAction($s526,"click")
EndFunc
AutoIt 提供了许多不同的方法来 HTML 文档检索。不提供相关源码,只能猜测。
HTML 文档源由 _IEDocReadHTML() 返回(假设您使用的是 IE.au3 UDF)。示例:
#include <IE.au3>
Global Const $oIE = _IECreate('http://www.google.com/')
Global Const $sDocHTML = _IEDocReadHTML($oIE)
_IEQuit($oIE)
ConsoleWrite($sDocHTML & @LF)
Exit 0
提到的 UDF 包含将值设置为表单元素的函数(在 AutoIt's user defined function reference 中查找 _IEForm...())。
来自帮助文件:
#include <IE.au3>
_IEGetObjByName ( ByRef $oObject, $sName [, $iIndex = 0] )
$oObject InternetExplorer.Application、Window 或 Frame 对象的对象变量
$sName 指定要匹配的对象名称
$iIndex 如果 name 出现不止一次,则通过从 0 开始的索引指定实例 0(默认)或正整数 returns 索引实例 -1 returns 指定对象的集合
在您的情况下,代码将类似于:
Local $SelectRoom = _IEGetObjByName($window,"ctl00$Main$ChangeReqsBtn")