将信息从JavaScript传递到AutoIt
是否有一种方法可以将JavaScript与AutoIt连接起来,以便JavaScript将数据(以及要处理的参数)传递给AutoIt 实际上,我正在使用JavaScript获取网页上的鼠标坐标。现在我想动态地将这些鼠标坐标传递给AutoIt脚本 最初我想用JavaScript动态保存一个txt文件,并从AutoIt读取它。但正如您所知,您无法使用客户端JavaScript(或jQuery)保存txt文件将信息从JavaScript传递到AutoIt,javascript,jquery,google-chrome,web,autoit,Javascript,Jquery,Google Chrome,Web,Autoit,是否有一种方法可以将JavaScript与AutoIt连接起来,以便JavaScript将数据(以及要处理的参数)传递给AutoIt 实际上,我正在使用JavaScript获取网页上的鼠标坐标。现在我想动态地将这些鼠标坐标传递给AutoIt脚本 最初我想用JavaScript动态保存一个txt文件,并从AutoIt读取它。但正如您所知,您无法使用客户端JavaScript(或jQuery)保存txt文件 请建议解决此问题的方法。另一种方法是安装本地web服务器,然后通过HTTP将任何数据从jav
请建议解决此问题的方法。另一种方法是安装本地web服务器,然后通过HTTP将任何数据从javascript传递到本地web服务器,在web服务器上的CGI脚本(或类似脚本)中执行AutoIt
只需注意如何设置web服务器、禁止远程连接或通过防火墙隔离远程连接,因为您可能不希望其他计算机执行AutoIt脚本 您可以通过附加到浏览器窗口来完成此操作。 这样,autoit就可以“查看”或操纵页面上的所有内容
当您说要将javascript返回的坐标传递给AutoIT时,请看or,我假设这是因为您想对它们执行某些操作,只有AutoIT可以帮助您。 这与这个小小的UDF的作者在他说 我想知道是否可以将jQuery“插入”到IE页面中,然后调用富jQuery API来选择DOM元素。这将大大减少AutoIt脚本中的行数 下面给出了一组基本教程
- 将文本设置为按钮
- 将文本设置为输入文本
- 提交谷歌搜索
- 按类搜索筛选只获取结果URL
我可以安装AutoIt扩展,但无法启用它,因为它在Chrome Web Store上不可用。米洛斯有什么想法吗?也许用IE来代替?我得做很多事情,比如WebGL和其他东西。艾美?Meh.IE automation with autoit是迄今为止最完整、最简单的浏览器自动化。不需要任何扩展或任何外部“助手”来操作页面。对于IE UDF上的每个函数,在AutoIt帮助文件中提供完整的帮助支持。
Global $objAppIE, $jQuery, $jQueryFilePath = @ScriptDir & '\jquery-1.9.1.js'
Global $oMyError = ObjEvent ( 'AutoIt.Error', '_MyErrFunc' )
If Not FileExists ( $jQueryFilePath ) Then InetGet ( 'http://code.jquery.com/jquery-1.9.1.js', $jQueryFilePath )
$objAppIE = ObjCreate ( 'InternetExplorer.Application' )
$objAppIE.visible = True
$objAppIE.navigate ( 'http://www.google.com/' )
$jQuery = _InsertJQuery ( $objAppIE )
If IsObj ( $jQuery ) Then
$jQuery ( ':input[id="gbqfba"]' ).text ( 'Search With Bing' ) ; **set text button**
Sleep ( 1000 ) ; just for see changes
$jQuery ( ':input[id="gbqfq"]' ).val ( 'autoit' ) ; **set input text**
Sleep ( 1000 ) ; just for see changes
$jQuery ( ':input[id="gbqfba"]' ).submit ( ) ; submit
_IEPageLoadWait ( $objAppIE )
Do
$aLinks = $jQuery ( '.l' ).get ( ) ; **filtering by class for get only results urls.**
Until $aLinks.length
ConsoleWrite ( '! Results Nb : ' & $aLinks.length & @Crlf )
$i=0
For $aLink In $aLinks
$i+=1
ConsoleWrite ( '+ ' & $i & ' $aLink.href : ' & $aLink.href & @Crlf )
Next
EndIf
Func _InsertjQuery ( $objAppIE )
Local $objWindow, $objHead, $objScript
_IEPageLoadWait ( $objAppIE )
If IsObj ( $objAppIE ) Then
$objWindow = $objAppIE.document.parentWindow
$objHead = $objAppIE.document.getElementsByTagName ( 'head' ).item ( 0 )
If Not IsObj ( $objwindow.jQuery ) Then
$objScript = $objAppIE.document.createElement ( 'script' )
$objScript.type = 'text/javascript'
$objScript.language = 'javascript'
$objScript.defer = 'defer'
$Script = FileRead ( $jQueryFilePath )
$objScript.text = $Script
$objHead.appendChild ( $objScript )
While Not ( IsObj ( $objwindow.jQuery ) )
Sleep ( 100 )
WEnd
$objwindow.jQuery.noConflict ( )
EndIf
Return $objwindow.jQuery
EndIf
EndFunc ;==> _InsertjQuery ( )
Func _IEPageLoadWait ( $objAppIE )
Do
Sleep ( 50 )
Until $objAppIE.readyState = 'complete' Or $objAppIE.readyState = 4
Do
Sleep ( 50 )
Until $objAppIE.document.readyState = 'complete' Or $objAppIE.document.readyState = 4
Do
Sleep ( 50 )
Until Not $objAppIE.busy
EndFunc ;==> _IEPageLoadWait ( )
Func _MyErrFunc ( )
$HexNumber = Hex ( $oMyError.number, 8 )
If $HexNumber = 80020006 Then Return
Msgbox ( 0, '', 'We intercepted a COM Error !' & @CRLF & 'Number is: ' & $HexNumber & @CRLF & 'Windescription is: ' & $oMyError.windescription & @CRLF & 'Line Number: ' & $oMyError.scriptLine & @CRLF, 3 )
Exit
Endfunc ;==> _MyErrFunc ( )