Arclite86 Posted May 10, 2014 Posted May 10, 2014 I juat refreshed my pc but it deleted all the firefox plugins I have downloaded the latest autoit and installed the firefox script but I still get an error when I try to start up the porgram this is the error that I get and I not remmber how i solved this before __FFStartProcess ==> General Error: Error reading registry entry for FireFox. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox\*CurrentVersion*\Main\PathToExe Error from RegRead: 1 please help me.
Arclite86 Posted May 10, 2014 Author Posted May 10, 2014 Have now managed to start up the firefox browser but it response after that: __FFStartProcess: ""C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-window "https://www.google.nl" "-repl 4242 " _FFConnect: OS: WIN_8 WIN32_NT 9200 _FFConnect: AutoIt: 3.3.10.2 _FFConnect: FF.au3: 0.6.0.1b-10 _FFConnect: IP: 127.0.0.1 _FFConnect: Port: 4242 _FFConnect: Delay: 2ms
Danp2 Posted May 10, 2014 Posted May 10, 2014 I assume you applied the fix we previously discussed >here. Do you have MozRepl installed and started? Latest Webdriver UDF Release Webdriver Wiki FAQs
Arclite86 Posted May 10, 2014 Author Posted May 10, 2014 I assume you applied the fix we previously discussed >here. Do you have MozRepl installed and started? Yes I also chanced that: and I installed the MozRepl and it in the firefox addons Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe") but when i try to run a script firefox starts up on google.nl (for example) than it doesnt respond any more, how is that possible this are the scripts that i use, I thought I did everything right: FF.au3 expandcollapse popup; :wrap=none:collapseFolds=1:maxLineLen=80:mode=autoitscript:tabSize=8:folding=indent: ; created with jEdit4AutoIt #include-once #Tidy_Off #Region Copyright #cs * FF.au3 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ce #EndRegion #Region Many thanks to: #cs - Jonathan Bennett and the AutoIt Team for AutoIt v3 the freeware BASIC-like scripting language (and thanks John George Kemeny and Thomas Eugene Kurtz for BASIC) - Dale Hohm, for his great IE.au3, which I've used as base for the functions-names and the error handling. - Johannes Schirmer, for some functions and suggestions for the FF.au3 - all others for their suggestions, bug reports ... - the FireFox-Team for his fantastic browser - and Massimiliano Mirra, without his work would this UDF impossible, for MozLab / MozRepl #ce #EndRegion #Region #CURRENT# ============================================================== ;_FFAction ;_FFClick ;_FFCmd ;_FFConnect ;_FFDialogWait ;_FFDisConnect ;_FFDispatchEvent ;_FFFormCheckBox ;_FFFormGetElementsLength ;_FFFormOptionSelect ;_FFFormRadioButton ;_FFFormReset ;_FFFormSubmit ;_FFFrameEnter ;_FFFrameLeave ;_FFGetLength ;_FFGetObjectInfo ;_FFGetPosition ;_FFGetValue ;_FFImageClick ;_FFImageGetBySize ;_FFImageMapClick ;_FFIsConnected ;_FFLinkClick ;_FFLinksGetAll ;_FFLoadWait ;_FFLoadWaitTimeOut ;_FFObj ;_FFObjDelete ;_FFObjGet ;_FFObjNew ;_FFOpenURL ;_FFPrefGet ;_FFPrefReset ;_FFPrefSet ;_FFQuit ;_FFReadHTML ;_FFReadText ;_FFSearch ;_FFSetValue ;_FFStart ;_FFTabAdd ;_FFTabClose ;_FFTabDuplicate ;_FFTabExists ;_FFTabGetSelected ;_FFTabSetSelected ;_FFTableWriteToArray ;_FFWindowClose ;_FFWindowGetHandle ;_FFWindowOpen ;_FFWindowSelect ;_FFWriteHTML ;_FFXPath #EndRegion #Region Description ; ============================================================================== ; UDF ...........: FF.au3 Global Const $_FF_AU3VERSION = "0.6.0.1b-10" ; Description ...: An UDF for FireFox automation. ; Requirement ...: MozRepl AddOn: ; http://hyperstruct.net/projects/mozlab ; http://wiki.github.com/bard/mozrepl/home ; Author(s) .....: Thorsten Willert, Johannes Schirmer ; Date ..........: Mon Sep 23 18:57:50 CEST 2013 @748 /Internet-Zeit/ ; FireFox Version: Firefox/23 (required 3.x.x) ; AutoIt Version : v3.3.6.1 ; ============================================================================== #cs V0.6.0.1b-10 - Added: __IsIP: IPV6 Support (IVP6, HexCompressed, 6Hex4Dec, Hex4DecCompressed) V0.6.0.1b-9 - Added: __FFStartProcess: 64bit support - Added: __FFIsURL: support for intranet - Changed: _FFQuit now closes FireFox with multiple windows - Fixed: Connection-limit to MozRepl V0.6.0.1b-8 (by Danp2) - Changed: _FFTabExists to allow search by href - Changed: _FFTabSetSelected to allow selection by href - Changed: SelectWin to check individual tabs - Added: FFau3.SearchTabURL helper function - Fixed: __FFStartProcess - Fixed: _FFGetPosition V0.6.0.1b-7 - New: Internal function: __FFMultiDispatchEvent: Dispatches multiple events on one element - Added: _FFDisPatchEvent can now simulate MouseEvents: click, mousedown, mouseup, mouseover, mousemove, mouseout - Added: Global constants $_FF_Event_* - Changed: Removed connection-limit to MozRepl - Optimized: __FFFilterString - Optimized: __FFB2S (Bool to string) - Optimized: __FFIsIP V0.6.0.1b-6 - Added: Internal function __FFSetTopDocument() - Changed: Default values for _FFXpath: _FFXPath($sQuery, $sAttribute = "", $iReturnType = 9, $iFilter = 0) - Changed/Fixed: _FFSearch($sSearchString[, $bCaseSensitive = False[, $bWholeWord = False[, $bSearchInFrames = True]]]) !!! Now you can use as $sSearchString RegExp, too! - Fixed: _FFAction _FFClick _FFFormSubmit _FFLoadWait _FFDisPatchEvent _FFOpenURL _FFTabAdd _FFTabClose _FFTabSetSelected now updating the FFau3.WCD-object (window.content.document) - Fixed: Different problems after _FFTabAdd - Fixed: Different problems after _FFOpenURL - Fixed: Error in _FFAu3Option() <V0.6.x.x For compatibily for older scripts, please use this UDF: http://thorsten-willert.de/Themen/FFau3/FF.au3/FFEx.au3 ToDo: Textsuche (name, id, text ...) per Substring, String, RegEx Events fuer die _FFForm* Funktionen Update der Window-Funktionen #ce #EndRegion #Region Global Constants Global Const $_FF_PROC_NAME = "firefox.exe" ; Firefox process name Global Const $_FF_COM_DELAY_MAX = 200 ; alternative connection delay in ms Global Enum $_FF_ERROR_Success = 0, _ ; No error $_FF_ERROR_GeneralError, _ ; General error $_FF_ERROR_SocketError, _ ; No socket $_FF_ERROR_InvalidDataType, _ ; Invalid data type (IP, URL, Port ...) $_FF_ERROR_InvalidValue, _ ; Invalid value in function-call $_FF_ERROR_SendRecv, _ ; Send / Recv Error $_FF_ERROR_Timeout, _ ; Connection / Send / Recv timeout $_FF_ERROR___UNUSED, _ ; $_FF_ERROR_NoMatch, _ ; No match for _FFAction-find/search _FFGetElement... $_FF_ERROR_RetValue, _ ; Error echo from Repl e.g. _FFAction("fullscreen","true") <> "true" $_FF_ERROR_ReplException, _ ; Exception from MozRepl / FireFox $_FF_ERROR_InvalidExpression ; Invalid expression in XPath query or RegEx Global Enum Step * 2 $_FF_Event_Change = 1, _ $_FF_Event_Select, _ $_FF_Event_Focus, _ $_FF_Event_Blur, _ $_FF_Event_Resize, _ $_FF_Event_Reset, _ $_FF_Event_Keydown, _ $_FF_Event_Keypress, _ $_FF_Event_Keyup, _ $_FF_Event_Click, _ $_FF_Event_MouseDown, _ $_FF_Event_MouseUp, _ $_FF_Event_MouseOver, _ $_FF_Event_MouseMove, _ $_FF_Event_MouseOut #EndRegion #Region Global Variables Global $_FF_GLOBAL_SOCKET = -1 ; Socket Global $_FF_CON_DELAY ; Connection Delay Global $_FF_LOADWAIT_TIMEOUT = 120000 Global $_FF_LOADWAIT_STOP = True ; stop loading after $_FF_LOADWAIT_TIMEOUT Global $_FF_COM_TRACE = True ; Trace communication to console (debugging) Global $_FF_ERROR_MSGBOX = True ; Shows in compiled scripts error messages in msgboxes Global $_FF_FRAME = 'top' Global $_FF_SEARCH_MODE = 0 ; 0 = Substring / 1 = Compare / (2 = RegEx not activ) #EndRegion #Tidy_On ; #FUNCTION# =================================================================== ; Name ..........: _FFAction ; Description ...: Some standard actions to work with FireFox ; Beschreibung ..: Standardaktionen in FireFox ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFAction($sAction[, $vOption = ""[, $vOption2 = ""[, $bLoadWait = True]]]) ; Parameter(s): .: $sAction - one of the following actions: ; | about ; | alert ; | back ; | blank ; | copy ; | fullscreen / fs ; | hideall ; | home ; | maximize / max ; | minimize / min ; | presentationmode / pm ; | print ; | reload ; | resetconsole ; | restore ; | scrollXY ; | stop ; | zoom ; $vOption - Optional: (Default = "") : ; $vOption2 - Optional: (Default = "") : ; $bLoadWait - Optional: (Default = true) : ; Return Value ..: Success - Return-value from MozRepl (sometimes an empty string!!!) ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:21:40 CET 2011 @765 /Internet Time/ ; Link ..........: http://developer.mozilla.org/en/docs/XUL:tabbrowser, http://developer.mozilla.org/en/docs/XUL:Method:reloadWithFlags, https://developer.mozilla.org/En/DOM/Window.scrollBy, http://kb.mozillazine.org/About_Protocol_Links ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFAction($sAction, $vOption = "", $vOption2 = "", $bLoadWait = True) Local Const $sFuncName = "_FFAction" Local $sCommand Local $sActionL = StringLower($sAction) Select Case $sActionL = "back" $sCommand = "gBrowser.goBack()" Case $sActionL = "home" $sCommand = "gBrowser.goHome()" Case $sActionL = "forward" $sCommand = "gBrowser.goForward()" Case $sActionL = "copy" Return _FFCmd(".getSelection()", $_FF_CON_DELAY + 100) Case $sActionL = "reload" And $vOption <> "" $sCommand = "gBrowser.reloadWithFlags('" & $vOption & "')" Case $sActionL = "reload" $sCommand = "gBrowser.reload()" Case $sActionL = "fullscreen" Or $sActionL = "fs" And $vOption $sCommand = "fullScreen=true" $bLoadWait = False Case $sActionL = "fullscreen" Or $sActionL = "fs" And Not $vOption $sCommand = "fullScreen=false" $bLoadWait = False Case $sActionL = "minimize" Or $sActionL = "min" $bLoadWait = False $sCommand = "minimize()" Case $sActionL = "maximize" Or $sActionL = "max" $bLoadWait = False $sCommand = "maximize()" Case $sActionL = "restore" $bLoadWait = False $sCommand = "restore()" Case $sActionL = "stop" $bLoadWait = False $sCommand = "gBrowser.stop()" Case $sActionL = "print" $bLoadWait = False $sCommand = "content.print()" Case $sActionL = "find" Or $sActionL = "search" _FFLoadWait() $sCommand = "content.find()" Case $sActionL = "hideall" And $vOption Return _FFCmd("toggleAffectedChrome(true);") Case $sActionL = "hideall" And Not $vOption Return _FFCmd("toggleAffectedChrome(false);") Case $sActionL = "presentationmode" Or $sActionL = "pm" And $vOption Return _FFCmd("toggleAffectedChrome(true)" & @CRLF & "fullScreen=true") Case $sActionL = "presentationmode" Or $sActionL = "pm" And Not $vOption Return _FFCmd("toggleAffectedChrome(false)" & @CRLF & "fullScreen=false") Case $sActionL = "alert" And $vOption <> "" $sCommand = 'alert("' & __FFValue2JavaScript($vOption) & '")' $bLoadWait = False Case $sActionL = "chrome" And $vOption <> "" $sCommand = '.location.href="' & __FFChromeSelect($vOption) & '"' Case $sActionL = "blank" $vOption = "blank" ContinueCase Case $sActionL = "about" $sCommand = '.location.href="about:' & $vOption & '"' Case $sActionL = "scrollxy" And IsInt($vOption) And IsInt($vOption2) $sCommand = "window.content.scrollBy(" & $vOption & "," & $vOption2 & ");" $bLoadWait = False Case $sActionL = "zoom" And $vOption = "" $vOption = 1 ContinueCase Case $sActionL = "zoom" And IsNumber($vOption) $sCommand = "gBrowser.selectedBrowser.markupDocumentViewer.fullZoom=" & $vOption $bLoadWait = False Case $sActionL = "resetconsole" $sCommand = ";" & @CRLF & "repl.home()" $bLoadWait = False Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAction: " & $sAction & " or " & "$vOption :" & $vOption & " or " & "$vOption2 :" & $vOption2)) Return "" EndSelect Local $sRet = _FFCmd($sCommand) If Not @error Then If $bLoadWait Then _FFLoadWait() __FFSetTopDocument() Return $sRet Else SetError(@error) Return "" EndIf EndFunc ;==>_FFAction ; #FUNCTION# =================================================================== ; Name ..........: _FFClick ; Description ...: Simulates a click on an element. ; Beschreibung ..: Simuliert einen Klick auf ein Element. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFClick($sElement[, $sMode = "elements"[, $iIndex = 0[, $bLoadWait = True]]]) ; Parameter(s): .: $sElement - Element to click on ; $sMode - Optional: (Default = "elements") : ; | elements ; | id ; | name ; | class ; | tag ; $iIndex - Optional: (Default = 0) : Index if $sMode = class, name, tag ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 16:57:09 CET 2011 @706 /Internet Time/ ; Link ..........: ; Related .......: _FFImageClick, _FFLinkClick. _FFImageMapClick ; Example .......: Yes ; ============================================================================== Func _FFClick($sElement, $sMode = "elements", $iIndex = 0, $bLoadWait = True) Local Const $sFuncName = "_FFClick" If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0 EndIf If $sMode = Default Then $sMode = "elements" If $iIndex = Default Then $iIndex = 0 Switch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0 EndSwitch If StringLeft($sElement, 1) = "." Then $sElement = "FFau3.WCD" & $sElement Local $RetVal = _FFCmd("FFau3.simulateEvent(" & $sElement & ",'MouseEvents','click');") If Not @error And $RetVal <> "_FFCmd_Err" And $RetVal = 1 Then Sleep(25) If $bLoadWait Then Return _FFLoadWait() __FFSetTopDocument() Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0 EndIf EndFunc ;==>_FFClick ; #FUNCTION# =================================================================== ; Name ..........: _FFDialogWait ; Description ...: Waits for a browser-dialog-message (e.g. alert) and closes it. ; Beschreibung ..: Wartet auf ein Dialog-Fenster (z.B.: alert) und schließt es. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFDialogWait($sText[, $sTitle = ""[, $sClose = "close"[, $iTimeOut = 10000]]]) ; Parameter(s): .: $sText - Text in the dialog (substring) ; $sTitle - Optional: (Default = "") : Window-title of the dialog (substring) ; $bClose - Optional: (Default = "close") : ; | close = Just closes the dialog window ; | open = Do nothing ; | ok = Uses the "ok"-button ; | cancel = Uses the"cancel"-button ; $iTimeOut - Optional: (Default = 10000) : Timeout for waiting (min. 1000ms) ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Apr 14 12:18:08 CEST 2009 ; Link ..........: ; Related .......: _FFLoadWait ; Example .......: Yes ; ============================================================================== Func _FFDialogWait($sText, $sTitle = "", $sClose = "close", $iTimeOut = 10000) Local Const $sFuncName = "_FFDialogWait" If $sTitle = "" And $sText = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String: $sText and $sTitle")) Return 0 EndIf If $sClose = Default Then $sClose = "close" If $iTimeOut < 1000 Then $iTimeOut = 1000 Local $bFound = False, $b1 = False, $b2 = False Local $iTimer = TimerInit() While TimerDiff($iTimer) < $iTimeOut If _FFCmd('FFau3.obj=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("").window;' & _ 'FFau3.obj.document.documentURI') = "chrome://global/content/commonDialog.xul" Then If $sTitle <> "" Then If StringInStr(_FFCmd("FFau3.obj.title"), $sTitle) Then $b1 = True EndIf If $sText <> "" Then If StringInStr(_FFCmd("FFau3.obj.document.documentElement.textContent"), $sText) Then $b2 = True EndIf Select Case $sTitle = "" And $sText <> "" And Not $b1 And $b2 $bFound = True Case $sTitle <> "" And $sText <> "" And $b1 And $b2 $bFound = True Case $sTitle <> "" And $sText = "" And $b1 And Not $b2 $bFound = True Case Else $bFound = False EndSelect If $bFound Then Switch StringLower($sClose) Case "close" ; just close the window _FFCmd("FFau3.obj.close()") Case "ok" _FFCmd("FFau3.obj.document.documentElement.acceptDialog()") Case "cancel" _FFCmd("FFau3.obj.document.documentElement.cancelDialog()") Case "open" ; do nothing Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sClose: " & $sClose)) Return 0 EndSwitch Return 1 EndIf EndIf Sleep(500) WEnd SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, Round(TimerDiff($iTimer)) & "ms > " & $iTimeOut & "ms")) Return 0 EndFunc ;==>_FFDialogWait ; #FUNCTION# =================================================================== ; Name ..........: _FFImageClick ; Description ...: Clicks an image-link. ; Beschreibung ..: Klickt einen Image-Link. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFImageClick($vSearch[, $sMode = "src"[, $bLoadWait = True]]) ; Parameter(s): .: $vSearch - String to search or number (0-n) in index mode (the search is performed in the attributes of the image and the link) ; $sMode - Optional: (Default = "src") : ; | alt ; | href ; | id ; | index ; | name ; | src ; | title ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Dec 04 14:55:57 CET 2009 ; Link ..........: ; Related .......: _FFClick, _FFLinkClick, _FFImageMapClick ; Example .......: Yes ; ============================================================================== Func _FFImageClick($vSearch, $sMode = "src", $bLoadWait = True) Local Const $sFuncName = "_FFImageClick" Local $sX $sMode = StringLower($sMode) $vSearch = __FFValue2JavaScript($vSearch) Switch $sMode Case "index" If Not IsInt($vSearch) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vSearch: " & $vSearch)) Return 0 EndIf $sX = ".images[" & $vSearch & "]" Case "id", "src", "href", "alt", "name", "title" Switch $_FF_SEARCH_MODE Case 0 $sX = "contains(@" & $sMode & ",'" & $vSearch & "')" Case 1 $sX = "@" & $sMode & "='" & $vSearch & "'" EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(src|href|alt|name|title|id|index) $sMode: " & $sMode)) Return 0 EndSwitch If $sMode <> "index" Then If _FFClick(_FFXPath("//a//img[" & $sX & "] | //a[" & $sX & "]//img", "", 9)) Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIf Else If _FFClick($sX) Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIf EndIf SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vSearch: " & $vSearch)) Return 0 EndFunc ;==>_FFImageClick ; #FUNCTION# =================================================================== ; Name ..........: _FFImageMapClick ; Description ...: Clicks on area of an image-map ; Beschreibung ..: Klickt auf ein Area einer Image-map ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFImageMapClick($vArea[, $sModeArea = "index"[, $vMap = 0[, $sModeMap = "index"[, $bLoadWait = True]]]]) ; Parameter(s): .: $vArea - (substring) ; $sModeArea - Optional: (Default = "index") : ; | alt ; | class ; | coords ; | href ; | id ; | index ; | name ; | title ; $vMap - Optional: (Default = 0) : (substring) ; $sModeMap - Optional: (Default = "index") : ; | class ; | id ; | index ; | name ; | title ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Sep 28 10:39:55 CEST 2009 ; Related .......: _FFClick, _FFLinkClick, _FFImageClick ; Example .......: Yes ; ============================================================================== Func _FFImageMapClick($vArea, $sModeArea = "index", $vMap = 0, $sModeMap = "index", $bLoadWait = True) Local Const $sFuncName = "_FFImageMapClick" Local $sXPath $sModeArea = StringLower($sModeArea) $sModeMap = StringLower($sModeMap) Switch $sModeMap Case "index" If Not IsInt($vMap) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vMap: " & $vMap)) Return 0 EndIf $sXPath = "//map[" & $vMap + 1 & "]" Case "id", "name", "title", "class" $sXPath = "//map[contains(@" & $sModeMap & ",'" & $vMap & "')]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(name|title|id|index|class) $sModeMap: " & $sModeMap)) Return 0 EndSwitch Switch $sModeArea Case "index" If Not IsInt($vMap) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vArea: " & $vArea)) Return 0 EndIf $sXPath &= "//area[" & $vArea & "]" Case "id", "name", "title", "alt", "href", "class", "coords" $sXPath &= "//area[contains(@" & $sModeArea & ",'" & $vArea & "')]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name|title|alt|href|coords|class) $sModeArea: " & $sModeArea)) Return 0 EndSwitch If _FFClick(_FFXPath($sXPath, "", 9)) Then If $bLoadWait Then Return _FFLoadWait() Return 1 EndIf SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) Return 0 EndFunc ;==>_FFImageMapClick ; #FUNCTION# =================================================================== ; Name ..........: _FFImagesGetBySize ; Description ...: Returns an array with the index of matching images. ; Beschreibung ..: Liefert ein Array mit den Indizes der passenden Bilder. ; Syntax ........: _FFImagesGetBySize($iHeight, $iWidth[, $sMode = "eq"[, $iPercent = 0]]) ; Parameter(s): .: $iHeight - Heigth of the image(s) ; $iWidth - Width of the image(s) ; $sMode - Optional (Default = "eq") : ; | eq ; | lt ; | gt ; $iPercent - Optional (Default = 0) : +/- tolerance in percent for $sMode = "eq" (min=0, max=100) ; Return Value ..: Success - array[0] > 0 ; Failure - array[0] = 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Sep 28 10:40:47 CEST 2009 ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFImagesGetBySize($iHeight, $iWidth, $sMode = "eq", $iPercent = 0) Local Const $sFuncName = "_FFImagesGetBySize" Local $aRet[1] = [0] If $iPercent < 0 Or $iPercent > 100 Then $iPercent = 0 $sMode = StringLower($sMode) If Not IsInt($iHeight) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iHeight: " & $iHeight)) Return $aRet EndIf If Not IsInt($iWidth) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iWidth: " & $iWidth)) Return $aRet EndIf Switch $sMode Case "eq", "lt", "gt" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(eq|lt|gt) $sMode: " & $sMode)) Return $aRet EndSwitch Local $sCommand = StringFormat("FFau3.SearchImageBySize(%s,%s,'%s',%s);", $iHeight, $iWidth, $sMode, $iPercent) Local $iIndex = StringStripWS(_FFCmd($sCommand, 10000), 3) $aRet = StringSplit($iIndex, " ") If Not @error And $aRet[0] > 0 Then For $i = 1 To $aRet[0] $aRet[$i] = Int($aRet[$i]) Next Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) Return $aRet EndIf Return $aRet EndFunc ;==>_FFImagesGetBySize ; #FUNCTION# =================================================================== ; Name ..........: _FFLinkClick ; Description ...: Simulates a click on a link. ; Beschreibung ..: Simuliert einen Klick auf einen Link ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFLinkClick($vSearch[, $sMode = "href"[, $bLoadWait = True]]) ; Parameter(s): .: $vSearch - (Sub)String to search or number (0-n) in index mode ; $sMode - Optional: (Default = "href") : ; | href ; | alt ; | name ; | title ; | id ; | index ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Jan 22 16:09:48 CET 2010 ; Link ..........: ; Related .......: _FFClick, _FFImageClick, _FFImageMapClick ; Example .......: Yes ; ============================================================================== Func _FFLinkClick($vSearch, $sMode = "href", $bLoadWait = True) Local Const $sFuncName = "_FFLinkClick" Local $sX $sMode = StringLower($sMode) If Not $sMode = "index" Then $vSearch = __FFValue2JavaScript($vSearch) Switch $sMode Case "index" If Not IsInt($vSearch) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vSearch: " & $vSearch)) Return 0 EndIf $sX = ".links[" & $vSearch & "]" Case "text" $sX = "//a[contains(.,'" & $vSearch & "')]" Case "href", "name", "title", "id" Switch $_FF_SEARCH_MODE Case 0 $sX = "//a[contains(@" & $sMode & ",'" & $vSearch & "')]" Case 1 $sX = "//a[@" & $sMode & "='" & $vSearch & "']" EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|href|text|name|title|id) $sMode: " & $sMode)) Return 0 EndSwitch If $sMode <> "index" Then Return _FFClick(_FFXPath($sX, "", 9), "elements", 0, $bLoadWait) Else Return _FFClick($sX, "elements", 0, $bLoadWait) EndIf SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vSearch: " & $vSearch)) Return 0 EndFunc ;==>_FFLinkClick ; #FUNCTION# =================================================================== ; Name ..........: _FFFrameLeave ; Description ...: Leaves the currently entered frame ; Beschreibung ..: Verläßt den aktuellen Frame ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFrameLeave() ; Parameter(s): .: ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 18 11:08:20 CEST 2009 @422 /Internet Time/ ; Link ..........: ; Related .......: _FFFrameEnter ; Example .......: Yes ; ============================================================================== Func _FFFrameLeave() ;Local Const $sFuncName = "_FFFrameLeave" Local $bTrc = $_FF_COM_TRACE $_FF_COM_TRACE = False Local $sFrame = StringMid($_FF_FRAME, 1, StringInStr($_FF_FRAME, ".", 2, -1) - 1) _FFCmd("FFau3.WCD=window.content.wrappedJSObject." & $sFrame & ".document;") If Not @error Then $_FF_COM_TRACE = $bTrc $_FF_FRAME = $sFrame Return 1 EndIf $_FF_COM_TRACE = $bTrc Return 0 EndFunc ;==>_FFFrameLeave ; #FUNCTION# =================================================================== ; Name ..........: _FFFrameEnter ; Description ...: Selects a frame, which all subsequent commands apply on. ; Beschreibung ..: Wählt einen Frame aus, auf den alle nachfolgenden Befehle wirken. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFrameEnter($vFrame[, $sMode = "index"]) ; Parameter(s): .: $vFrame - Frame name or id or number in index mode ; $sMode - Optional: (Default = "index") : ; | name ; | id ; | index ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Oct 24 21:05:36 CEST 2009 ; Link ..........: ; Related .......: _FFFrameLeave ; Example .......: Yes ; ============================================================================== Func _FFFrameEnter($vFrame, $sMode = "index") Local Const $sFuncName = "_FFFrameEnter" Local $sFrame = $_FF_FRAME Local $bTrc = $_FF_COM_TRACE Switch StringLower($sMode) Case "index" If IsInt($vFrame) Then $sFrame &= ".frames[" & $vFrame & "]" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vFrame: " & $vFrame)) Return 0 EndIf Case "name", "id" If IsString($vFrame) Then $sFrame &= "." & $vFrame Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(string) $vFrame: " & $vFrame)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sMode: " & $sMode)) Return 0 EndSwitch $_FF_COM_TRACE = False _FFCmd("FFau3.WCD=window.content.wrappedJSObject." & $sFrame & ".document;") If Not @error Then $_FF_FRAME = $sFrame $_FF_COM_TRACE = $bTrc Return 1 EndIf $_FF_COM_TRACE = $bTrc SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Frame not found $vFrame: " & $vFrame)) Return 0 EndFunc ;==>_FFFrameEnter ; #FUNCTION# =================================================================== ; Name ..........: _FFGetLength ; Description ...: Returns the length of the elements in $sMode ; Beschreibung ..: Gibt die Anzahl der angegebenen Elemente zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetLength([$sMode = "links"]) ; Parameter(s): .: $sMode - Optional: (Default = "links") : ; | links ; | images ; | forms ; | frames ; | anchors ; | tables ; | styleSheets ; | tabs ; | history ; | applets ; | embeds ; | plugins ; | tag ; Return Value ..: Success - Length of the elements ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 23:24:13 CET 2009 @975 /Internet Time/ ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFGetLength($sMode = "links") Local Const $sFuncName = "_FFGetLength" $sMode = StringLower($sMode) Switch $sMode Case "links", "images", "forms", "anchors", "applets", "embeds" Return _FFCmd("." & $sMode & ".length") Case "tabs" Return _FFCmd("gBrowser.tabContainer.childNodes.length") Case "frames" Return _FFCmd("content.frames.length") Case "tables" Return _FFCmd(".getElementsByTagName('table').length") Case "history" Return _FFCmd("content.history.length") Case "stylesheets" Return _FFCmd(".styleSheets.length") Case "plugins" Return _FFCmd("navigator.plugins.length") Case Else Local $RetVal = _FFCmd(".getElementsByTagName('" & $sMode & "').length;") If Not @error And $RetVal <> "_FFCmd_Err" Then Return $RetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sMode: " & $sMode)) Return 0 EndIf EndSwitch Return 0 EndFunc ;==>_FFGetLength ; #FUNCTION# =================================================================== ; Name ..........: _FFLinksGetAll ; Description ...: Returns an array with informations about all existing links. ; Beschreibung ..: Gibt ein Array mit Informationen über alle vorhandenen Links zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFLinksGetAll() ; Parameter(s): .: ; Return Value ..: Success - 2 dim array with the link informations: ; | array[n][0] = href ; | array[n][1] = hash ; | array[n][2] = search ; | array[n][3] = name ; | array[n][4] = id ; | array[n][5] = text ; | array[n][6] = innerHTML ; | array[n][7] = target ; | array[n][8] = protocol ; | array[n][9] = port ; Failure - array[0][0] = 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Sep 22 12:00:34 CEST 2009 @458 /Internet Time/ ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFLinksGetAll() Local Const $sFuncName = "_FFLinksGetAll" Local $aInfo, $sInfo, $aRet[1][9], $aTmp Local $sDelimiter Local $bTrc = $_FF_COM_TRACE $_FF_COM_TRACE = False If _FFGetLength() > 0 Then $sDelimiter = "FF" & Random(1000, 9999, 1) $sInfo = _FFCmd('FFau3.GetLinks("' & $sDelimiter & '");') $aInfo = StringSplit($sInfo, @CRLF) If @error Then $_FF_COM_TRACE = $bTrc SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) Return $aRet[0][0] = 0 EndIf ReDim $aRet[$aInfo[0] - 1][9] For $i = 1 To $aInfo[0] - 1 $aTmp = StringSplit($aInfo[$i], $sDelimiter, 1) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "StringSplit: " & $aInfo[$i])) ExitLoop EndIf If UBound($aTmp) <> 11 Then $sDelimiter = "FF" & Random(1000, 9999, 1) $sInfo = _FFCmd("FFau3.GetLinkInfo(" & $i & " ,'top','" & $sDelimiter & "')") $aTmp = StringSplit($sInfo, $sDelimiter, 1) EndIf For $j = 1 To $aTmp[0] - 1 $aRet[$i - 1][$j - 1] = $aTmp[$j] Next Next $_FF_COM_TRACE = $bTrc Return $aRet Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch)) $aRet[0][0] = 0 EndIf $_FF_COM_TRACE = $bTrc SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError)) Return $aRet[0][0] = 0 EndFunc ;==>_FFLinksGetAll ; #FUNCTION# =================================================================== ; Name ..........: _FFConnect ; Description ...: Connects to FireFox / MozRepl ; Beschreibung ..: Stellt eine Verbindung mit Firefox / MozRepl her. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFConnect([$IP = "127.0.0.1"[, $iPort = 4242[, $iTimeOut = 60000]]]) ; Parameter(s): .: $IP - Optional: (Default = "127.0.0.1") : ; $iPort - Optional: (Default = 4242) : ; $iTimeOut - Optional: (Default = 60000) : ; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET > -1 ; @EXTENDED - 1 = Non Browser-window ; | 2 = Browser-window ; Failure - 0 / $_FF_GLOBAL_SOCKET = -1 ; @ERROR - ; @EXTENDED - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Aug 18 09:36:57 CEST 2009 ; Link ..........: http://msdn.microsoft.com/en-us/library/ms740668(VS.85).aspx ; Related .......: _FFDisConnect, _FFIsConnected, _FFStart ; Example .......: Yes ; ============================================================================== Func _FFConnect($IP = "127.0.0.1", $iPort = 4242, $iTimeOut = 60000) Local Const $sFuncName = "_FFConnect" Local $Extended = 2 If $_FF_CON_DELAY > 100 Then Opt("TCPTimeout", $_FF_CON_DELAY) If $IP = Default Then $IP = "127.0.0.1" If $iPort = Default Then $iPort = 4242 If $iTimeOut = Default Then $iTimeOut = 60000 If Not __FFIsIP($IP) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, $IP)) Return 0 EndIf If Not __FFIsPort($iPort) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, $iPort)) Return 0 EndIf Local $iTCPErr Local $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False ConsoleWrite("_FFConnect: OS:" & @TAB & @OSVersion & " " & @OSType & " " & @OSBuild & " " & @OSServicePack & @CRLF) ConsoleWrite("_FFConnect: AutoIt:" & @TAB & @AutoItVersion & @CRLF) ConsoleWrite("_FFConnect: FF.au3:" & @TAB & $_FF_AU3VERSION & @CRLF) ConsoleWrite("_FFConnect: IP:" & @TAB & $IP & @CRLF) ConsoleWrite("_FFConnect: Port:" & @TAB & $iPort & @CRLF) TCPStartup() If Not @error Then ; delay for connection over network $_FF_CON_DELAY = Ping($IP) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Ping Error: " & @error)) $_FF_CON_DELAY = $_FF_COM_DELAY_MAX EndIf $_FF_CON_DELAY += Round($_FF_CON_DELAY * 0.5) ConsoleWrite("_FFConnect: Delay: " & @TAB & $_FF_CON_DELAY & "ms" & @CRLF) ; trying to connect Local $iTimeOutTimer = TimerInit() While 1 $_FF_GLOBAL_SOCKET = TCPConnect($IP, $iPort) $iTCPErr = @error Sleep(500) If __FFIsSocket($_FF_GLOBAL_SOCKET) Then ExitLoop If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then ; Profil laden SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "TCPConnect Error: " & $iTCPErr)) $_FF_GLOBAL_SOCKET = -1 ExitLoop EndIf WEnd If $_FF_GLOBAL_SOCKET <> -1 Then ConsoleWrite("_FFConnect: Socket: " & @TAB & $_FF_GLOBAL_SOCKET & @CRLF) If __FFWaitForRepl(10000) Then _FFCmd(".browserDOMWindow") If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Warning: Connected to a non browser-window")) $Extended = 1 EndIf ConsoleWrite("_FFConnect: Browser:" & @TAB & _FFCmd("navigator.userAgent") & @CRLF) __FFSendJavaScripts() $_FF_COM_TRACE = $bTrace Return SetError(0, $Extended, 1) EndIf Else TCPShutdown() $_FF_COM_TRACE = $bTrace Return SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Timeout: Can not connect to FireFox/MozRepl on: " & $IP & ":" & $iPort), 0, 0) EndIf Else $_FF_COM_TRACE = $bTrace Return SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCPStartup Error: " & @error), 0, 0) EndIf $_FF_COM_TRACE = $bTrace Return SetError($_FF_ERROR_GeneralError, $Extended, 0) EndFunc ;==>_FFConnect ; #FUNCTION# =================================================================== ; Name ..........: _FFDisConnect ; Description ...: Disconnects from FireFox ; Beschreibung ..: Trennt die Verbindung mit FireFox / MozRepl ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFDisConnect() ; Parameter(s): .: ; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET = -1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Apr 15 09:54:09 CEST 2009 ; Link ..........: http://msdn.microsoft.com/en-us/library/ms740668(VS.85).aspx ; Related .......: _FFConnect, _FFIsConnected, _FFStart ; Example .......: Yes ; ============================================================================== Func _FFDisConnect() Local Const $sFuncName = "_FFDisConnect" Opt("TCPTimeout", 200) If __FFIsSocket($_FF_GLOBAL_SOCKET) Then __FFSend("repl.quit()") TCPCloseSocket($_FF_GLOBAL_SOCKET) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCP Error: " & @error)) Return 0 EndIf TCPShutdown() If Not @error Then If $_FF_COM_TRACE Then ConsoleWrite("_FFDisConnect: disconnected" & @CRLF) $_FF_FRAME = 'top' $_FF_GLOBAL_SOCKET = -1 Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "TCP Error: " & @error)) Return 0 EndIf Else SetError(__FFError($sFuncName, $_FF_ERROR_SocketError, $_FF_GLOBAL_SOCKET)) Return 0 EndIf EndFunc ;==>_FFDisConnect ; #FUNCTION# =================================================================== ; Name ..........: _FFIsConnected ; Description ...: Connection status to FireFox / MozRepl ; Beschreibung ..: Liefert den Status der Verbindung mit FireFox / MozRepl ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFIsConnected() ; Parameter(s): .: ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Sep 28 11:03:44 CEST 2009 ; Link ..........: ; Related .......: _FFConnect, _FFDisConnect, _FFStart ; Example .......: Yes ; ============================================================================== Func _FFIsConnected() Local Const $sFuncName = "_FFIsConnected" If __FFIsSocket($_FF_GLOBAL_SOCKET) And _FFCmd("FFau3 != null?1:0") = 1 Then Return 1 SetError(__FFError($sFuncName, $_FF_ERROR_SocketError, $_FF_GLOBAL_SOCKET)) Return 0 EndFunc ;==>_FFIsConnected ; #FUNCTION# =================================================================== ; Name ..........: _FFFormCheckBox ; Description ...: Checks or unchecks a CheckBox in a form. ; Beschreibung ..: Wählt eine Checkbox an oder ab. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormCheckBox($vBox[, $bChecked = True[, $iBoxNameIndex = 0[, $sBoxMode = "index"[, $vForm = 0[, $sFormMode = "index"[, $bCheckBox = True]]]]]]) ; Parameter(s): .: $vBox - Index name, id or value of the CheckBox ; $bChecked - Optional: (Default = True) : ; | True ; | False ; $iBoxNameIndex - Optional: (Default = 0) : Index if $sBoxMode = "name" ; $sBoxMode - Optional: (Default = "index") : ; | index ; | name ; | id ; | value ; $vForm - Optional: (Default = 0) : Index, name or id of the Form ; $sFormMode - Optional: (Default = "index") : ; | index ; | name ; | id ; | action ; | title ; $bCheckBox - Optional: (Default = True) : Internal use if the function should work for RadioButtons ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Nov 06 18:10:36 CET 2009 ; Link ..........: ; Related .......: _FFFormOptionSelect, _FFFormRadioButton, _FFFormReset, _FFFormSubmit ; Example .......: Yes ; ============================================================================== Func _FFFormCheckBox($vBox, $bChecked = True, $iBoxNameIndex = 0, $sBoxMode = "index", $vForm = 0, $sFormMode = "index", $bCheckBox = True) Local Const $sFuncName = "_FFFormCheckBox" ; Default parameters ;If $bChecked = Default Then $bChecked = true If $iBoxNameIndex = Default Then $iBoxNameIndex = 0 If $sBoxMode = Default Then $sBoxMode = "index" If $vForm = Default Then $vForm = 0 If $sFormMode = Default Then $sFormMode = "index" Local $sType If $bCheckBox Then $sType = "checkbox" Else $sType = "radio" EndIf $sBoxMode = StringLower($sBoxMode) $sFormMode = StringLower($sFormMode) If Not IsBool($bChecked) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $bChecked: " & $bChecked)) Return 0 EndIf Local $sCommand = "checked=" & __FFB2S($bChecked) Local $sForm, $sCheckBox Switch $sFormMode Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sForm = $vForm + 1 Case "id", "name", "action", "title" $sForm = StringFormat("@%s='%s'", $sFormMode, $vForm) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sFormMode: " & $sFormMode)) Return 0 EndSwitch Switch $sBoxMode Case "index" If Not IsInt($vBox) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vBox: " & $vBox)) Return 0 EndIf $sCheckBox = "position()=" & $vBox + 1 Case "name" If Not IsInt($iBoxNameIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iBoxNameIndex: " & $iBoxNameIndex)) Return 0 EndIf $sCheckBox = StringFormat("@name='%s' and position()=%i", $vBox, $iBoxNameIndex + 1) Case "id", "value" $sCheckBox = StringFormat("@%s='%s'", $sBoxMode, $vBox) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id|value) $sBoxMode: " & $sBoxMode)) Return 0 EndSwitch _FFXPath(StringFormat("//form[%s]//input[@type='%s' and %s]", $sForm, $sType, $sCheckBox), $sCommand, 9) If Not @error Then Return 1 Else SetError(@error) Return 0 EndIf EndFunc ;==>_FFFormCheckBox ; #FUNCTION# =================================================================== ; Name ..........: _FFFormGetElementsLength ; Description ...: Length of the form elements ; Beschreibung ..: Gibt die Anzahl der Elemente eines Formulars zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormGetElementsLength([$vForm = 0[, $sMode = "index"]]) ; Parameter(s): .: $vForm - Optional: (Default = 0) : Index (0-n), name or id ; $sMode - Optional: (Default = "index") : ; | index ; | name ; | id ; | action ; | title ; Return Value ..: Success - >0 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Nov 06 22:04:28 CET 2009 ; Link ..........: ; Related .......: _FFGetLength ; Example .......: Yes ; ============================================================================== Func _FFFormGetElementsLength($vForm = 0, $sMode = "index") Local Const $sFuncName = "_FFFormGetElementsLength" If $vForm = Default Then $vForm = 0 If $sMode = Default Then $sMode = "index" $sMode = StringLower($sMode) Local $sForm Switch $sMode Case "index" If IsInt($vForm) Then $sForm = $vForm + 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf Case "name", "id", "action", "title" $sForm = "@" & $sMode & "='" & $vForm & "'" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id|action|title) $sMode: " & $sMode)) Return 0 EndSwitch Local $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False _FFXPath(StringFormat("//form[%s]", $sForm), "", 9) Local $sRet = _FFCmd("FFau3.xpath.elements.length") If Not @error Then $_FF_COM_TRACE = $bTrace Return $sRet Else $_FF_COM_TRACE = $bTrace SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vForm: " & $vForm)) Return 0 EndIf EndFunc ;==>_FFFormGetElementsLength ; #FUNCTION# =================================================================== ; Name ..........: _FFFormOptionSelect ; Description ...: Selects an element of an OptionSelect. ; Beschreibung ..: Wählt ein Element eines OptionSelect aus. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormOptionSelect([$vElement = 0[, $sElementMode = "index"[, $vOption = 0[, $sOptionMode = "index"[, $vForm = 0[, $sFormMode = "index"]]]]]]) ; Parameter(s): .: $vElement - Optional: (Default = 0) : index (0-n), name, id ; $sElementMode - Optional: (Default = "index") : ; | index ; | name ; | id ; $vOption - Optional: (Default = 0) : index (0-n), name, id, text, value ; $sOptionMode - Optional: (Default = "index") : ; | index ; | name ; | id ; | text ; | value ; $vForm - Optional: (Default = 0) : index (0-n), name, id ; $sFormMode - Optional: (Default = "index") : ; | index ; | name ; | id ; | action ; | title ; Return Value ..: Success - 1 ; Failure - 0 and sets ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 13:03:49 CET 2011 @544 /Internet Time/ ; Link ..........: ; Related .......: _FFFormCheckBox, _FFFormRadioButton, _FFFormReset, _FFFormSubmit ; Example .......: Yes ; ============================================================================== Func _FFFormOptionSelect($vElement = 0, $sElementMode = "index", $vOption = 0, $sOptionMode = "index", $vForm = 0, $sFormMode = "index") Local Const $sFuncName = "_FFFormOptionSelect" ; Default parameters If $vElement = Default Then $vElement = 0 If $sElementMode = Default Then $sElementMode = "index" If $vOption = Default Then $vOption = 0 If $sOptionMode = Default Then $sOptionMode = "index" If $vForm = Default Then $vForm = 0 If $sFormMode = Default Then $sFormMode = "index" Local $sForm, $sElement, $sOption $sElementMode = StringLower($sElementMode) $sOptionMode = StringLower($sOptionMode) $sFormMode = StringLower($sFormMode) Switch $sFormMode Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sForm = $vForm + 1 Case "id", "name", "action", "title" $sForm = StringFormat("@%s='%s'", $sFormMode, $vForm) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sFormMode: " & $sFormMode)) Return 0 EndSwitch Switch $sElementMode Case "index" If Not IsInt($vElement) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vElement: " & $vElement)) Return 0 EndIf $sElement = "position()=" & $vElement + 1 Case "id", "name" $sElement = StringFormat("@%s='%s'", $sElementMode, $vElement) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sElementMode: " & $sElementMode)) Return 0 EndSwitch Switch $sOptionMode Case "index" If Not IsInt($vOption) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vOption: " & $vOption)) Return 0 EndIf $sOption = "position()=" & $vOption + 1 Case "text" $sOption = StringFormat("contains(.,'%s')", $vOption) Case "name", "id", "value" $sOption = StringFormat("@%s='%s'", $sOptionMode, $vOption) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|text|name|id|value) $sOptionMode: " & $sOptionMode)) Return 0 EndSwitch Local $sCommand = StringFormat("//form[%s]//select[%s]//option[%s]", $sForm, $sElement, $sOption) _FFXPath($sCommand, "selected=true", 9) If Not @error Then $sCommand = StringFormat("//form[%s]//select[%s]", $sForm, $sElement) _FFDispatchEvent(_FFXPath($sCommand, "", 9), "change") Return 1 Else SetError(@error) Return 0 EndIf EndFunc ;==>_FFFormOptionSelect ; #FUNCTION# =================================================================== ; Name ..........: _FFFormRadioButton ; Description ...: Selects a RadioButton in a form ; Beschreibung ..: Wählt einen RadioButton aus. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormRadioButton($vRadioButton[, $iRadioButtonIndex = 0[, $sRadioButtonMode = "index"[, $vForm = 0[, $sFormMode = "index"]]]]) ; Parameter(s): .: $vRadioButton - name, id or value ; $iRadioButtonIndex - Optional: (Default = 0) : RadioButton index (0-n) ; $sRadioButtonMode - Optional: (Default = "index") : RadioButton ; | index ; | name ; | id ; | value ; $vForm - Optional: (Default = 0) : Form index or name ; $sFormMode - Optional: (Default = "index") : ; | index ; | name ; Return Value ..: Success - RadioButton state 1 or 0 ; Failure - -1 ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Mar 25 09:22:11 CET 2009 @390 /Internet Time/ ; Link ..........: ; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormReset, _FFFormSubmit ; Example .......: Yes ; ============================================================================== Func _FFFormRadioButton($vRadioButton, $iRadioButtonIndex = 0, $sRadioButtonMode = "index", $vForm = 0, $sFormMode = "index") ;Local Const $sFuncName = "_FFFormRadioButton" Local $RetVal = _FFFormCheckBox($vRadioButton, True, $iRadioButtonIndex, $sRadioButtonMode, $vForm, $sFormMode, False) SetError(@error) Return $RetVal EndFunc ;==>_FFFormRadioButton ; #FUNCTION# =================================================================== ; Name ..........: _FFFormReset ; Description ...: Resets a form ; Beschreibung ..: Setzt ein Formular zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormReset([$vForm = 0[, $sMode = "index"]]) ; Parameter(s): .: $vForm - Optional: (Default = 0) : Index (0-n), name, id ; $sMode - Optional: (Default = "index") : ; | Index ; | name ; | id ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 18 06:01:42 CEST 2009 @209 /Internet Time/ ; Link ..........: ; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormSubmit, _FFFormRadioButton ; Example .......: Yes ; ============================================================================== Func _FFFormReset($vForm = 0, $sMode = "index") Local Const $sFuncName = "_FFFormReset" Local $sCommand Switch StringLower($sMode) Case "index" If Not IsInt($vForm) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf $sCommand = '.forms[' & $vForm & ']' Case "id" $sCommand = '.getElementById("' & $vForm & '")' Case "name" $sCommand = '.getElementsByName("' & $vForm & '")[0]' Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name) $sMode: " & $sMode)) Return 0 EndSwitch Local $sRetVal = _FFCmd($sCommand & ".reset();") If Not @error And $sRetVal <> "_FFCmd_Err" Then Return 1 SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vForm: " & $vForm)) Return 0 EndFunc ;==>_FFFormReset ; #FUNCTION# =================================================================== ; Name ..........: _FFFormSubmit ; Description ...: Submits a form ; Beschreibung ..: Sendet ein Formular ab. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormSubmit([$vForm = 0[, $sMode = "index"[, $sSubmitMode = "submit"[, $bLoadWait = True]]]]) ; Parameter(s): .: $vForm - Optional: (Default = 0) : Index-number, name or id ; $sSubmitMode - Optional: (Default = "auto") : ; | auto ; | click ; | submit ; | keydown ; | keypress ; $bLoadWait - Optional: (Default = true) : ; | True ; | False ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:19:36 CET 2011 @763 /Internet Time/ ; Link ..........: ; Related .......: _FFFormCheckBox, _FFFormOptionSelect, _FFFormReset, _FFFormRadioButton ; Example .......: Yes ; ============================================================================== Func _FFFormSubmit($vForm = 0, $sMode = "index", $sSubmitMode = "submit", $bLoadWait = True) Local Const $sFuncName = "_FFFormSubmit" Local $sRetVal Local $iSubmit = -1, $iPassword = -1 Local $bTrace $sMode = StringLower($sMode) If $sMode = "index" Then If IsInt($vForm) Then $vForm = 'forms[' & $vForm & ']' Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vForm: " & $vForm)) Return 0 EndIf ElseIf $sMode = "id" Then $vForm = "getElementById('" & $vForm & "')" ElseIf $sMode = "name" Then $vForm = "getElementsByName('" & $vForm & "')[0]" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|id|name) $sMode: " & $sMode)) Return 0 EndIf Local $iLength = _FFCmd(StringFormat('.%s.elements.length;', $vForm)) If $iLength = "_FFCmd_Err" Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "No Elements found in form: " & $vForm)) Return 0 EndIf $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False If $iLength > 0 And ($sSubmitMode = "keypress" Or $sSubmitMode = "keydown" Or $sSubmitMode = "click" Or $sSubmitMode = "auto") Then For $i = 0 To $iLength - 1 $sRetVal = _FFCmd(StringFormat('.%s.elements[%i].type;', $vForm, $i)) If @error Then Return 0 If $sRetVal = "submit" Then $iSubmit = $i If $sRetVal = "password" Then $iPassword = $i If $iSubmit > -1 And $iPassword > -1 Then ExitLoop Next EndIf $_FF_COM_TRACE = $bTrace Switch StringLower($sSubmitMode) Case "auto" ContinueCase Case "keypress" ; fire "enter" with keypress on the password element _FFDispatchEvent(StringFormat('.%s.elements[%i]', $vForm, $iPassword), "keypress", 13) If Not @error Then If $bLoadWait Then If Not _FFLoadWait() Then Return 0 EndIf Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "click" ; clicks on the submit element $sRetVal = _FFCmd(StringFormat('.%s.elements[%i].click();', $vForm, $iSubmit), 3000) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf __FFSetTopDocument() Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "submit" ; use form.submit() $sRetVal = _FFCmd(StringFormat('.%s.submit();', $vForm)) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf __FFSetTopDocument() Return 1 Else If $sSubmitMode = "auto" Then ContinueCase EndIf Case "keydown" ; fire "enter" with keydown on the password element _FFDispatchEvent(StringFormat(".%s.elements[%i]", $vForm, $iPassword), "keydown", 13) If Not @error Then If $bLoadWait Then If Not _FFLoadWait() And $sSubmitMode = "auto" Then ContinueCase EndIf __FFSetTopDocument() Return 1 EndIf Case Else Return 0 EndSwitch Return 0 EndFunc ;==>_FFFormSubmit ; #FUNCTION# =================================================================== ; Name ..........: _FFGetValue ; Description ...: Gets an value of an element ; Beschreibung ..: Liefert das Value eines Elements ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetValue($sElement[, $sMode = "elements"[, $iIndex = 0[, $iFilter = 0]]]) ; Parameter(s): .: $sElement - ; $sMode - Optional: (Default = "elements") : ; | elements: element or object from _FFXpath or _FFObj* ; | id ; | name ; | class ; | tag ; $iIndex - Optional: (Default = 0) : index if $sMode = class, name, tag ; $iFilter - Optional: (Default = 0) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Sep 23 22:55:36 CEST 2009 ; Link ..........: ; Related .......: _FFSetValue, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFGetValue($sElement, $sMode = "elements", $iIndex = 0, $iFilter = 0) Local Const $sFuncName = "_FFGetValue" If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0 EndIf If Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0 EndIf Switch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0 EndSwitch If StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElement Local $sRetVal = _FFCmd($sElement & ".value") If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then __FFFilterString($sRetVal, $iFilter) Return $sRetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0 EndIf EndFunc ;==>_FFGetValue ; #FUNCTION# =================================================================== ; Name ..........: _FFDispatchEvent ; Description ...: Simulates a HTML event ; Beschreibung ..: Simuliert ein HTML-Ereignis an einem Element. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFDispatchEvent($sElement[, $sEventType = "change"[, $iKeyCode = 13]]) ; Parameter(s): .: $sElement - Element where the event is fired (or object from _FFXpath/_FFObj*) ; $sEventType - Optional: (Default = "change") : ; | change ; | select ; | focus ; | blur ; | resize ; | keydown ; | keypress ; | keyup ; | click ; | mousedown ; | mouseup ; | mouseover ; | mousemove ; | mouseout ; $iKeyCode - ASCII-KeyCode (decimal) ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 22:37:07 CET 2011 @942 /Internet Time/ ; Link ..........: http://www.w3.org/TR/DOM-Level-2-Events/events.html ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFDispatchEvent($sElement, $sEventType = "change", $iKeyCode = 13) Local Const $sFuncName = "_FFDispatchEvent" If $iKeyCode < 0 Or $iKeyCode > 255 Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $iKeyCode: 0-255" & $iKeyCode)) Return 0 EndIf Local $sType $sEventType = StringLower($sEventType) If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Switch $sEventType Case "change", "select", "focus", "blur", "resize", "reset" $sType = "Event" Case "keydown", "keypress", "keyup" $sType = "KeyboardEvent" Case "click", "mousedown", "mouseup", "mouseover", "mousemove", "mouseout" $sType = "MouseEvents" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(change|select|focus|blur|resize|keydown|keypress|keyup|click|mousedown|mouseup|mouseover|mousemove|mouseout) $sEventType: " & $sEventType)) Return 0 EndSwitch If StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElement Local $RetVal = _FFCmd(StringFormat("FFau3.simulateEvent(%s,'%s','%s',%s);", $sElement, $sType, $sEventType, $iKeyCode)) If Not @error And $RetVal <> "_FFCmd_Err" Then __FFSetTopDocument() Return $RetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sElement: " & $sElement)) Return 0 EndIf Return 0 EndFunc ;==>_FFDispatchEvent ; #FUNCTION# =================================================================== ; Name ..........: _FFLoadWait ; Description ...: Wait while the page is loading. ; Beschreibung ..: Wartet bis die Seite geladen ist. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFLoadWait([$iTimeOut = $_FF_LOADWAIT_TIMEOUT[, $bStop = $_FF_LOADWAIT_STOP]]) ; Parameter(s): .: $iTimeOut - Optional: (Default = $_FF_LOADWAIT_TIMEOUT) : Timeout while waiting in ms ; $bStop - Optional: (Default = $_FF_LOADWAIT_STOP) : Stops loading after TimeOut ; Return Value ..: Success - 1 ; @EXTENDED - loading time in ms ; Failure - 0 ; @ERROR - ; @EXTENDED - loading time in ms ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 17:17:09 CET 2011 @720 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/nsIWebProgress ; Related .......: _FFDialogWait ; Example .......: Yes ; ============================================================================== Func _FFLoadWait($iTimeOut = $_FF_LOADWAIT_TIMEOUT, $bStop = $_FF_LOADWAIT_STOP) Local Const $sFuncName = "_FFLoadWait" Local $iLoadingTime = 0 If $iTimeOut < 1000 Then $iTimeOut = 1000 Local $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False If Not $_FF_COM_TRACE Then ConsoleWrite("_FFLoadWait: ") Local $TimeOutTimer = TimerInit() While TimerDiff($TimeOutTimer) < $iTimeOut If Not $_FF_COM_TRACE Then ConsoleWrite(".") If _FFCmd("FFau3.tmp=window.getBrowser().webProgress;FFau3.tmp.isLoadingDocument && FFau3.tmp.busyFlags ? false: true;") Then $iLoadingTime = Round(TimerDiff($TimeOutTimer)) ConsoleWrite(" loaded in " & $iLoadingTime & "ms" & @CRLF) Sleep($_FF_CON_DELAY * 1.4) __FFSetTopDocument() $_FF_COM_TRACE = $bTrace Return SetError(0, $iLoadingTime - $_FF_CON_DELAY * 1.4, 1) EndIf Sleep(250) WEnd If $bStop Then _FFAction("stop") __FFSetTopDocument() $_FF_COM_TRACE = $bTrace ConsoleWrite(@CRLF & @CRLF) Return SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Can not check site status."), $iLoadingTime, 0) EndFunc ;==>_FFLoadWait ; #FUNCTION# =================================================================== ; Name ..........: _FFGetObjectInfo ; Description ...: Returns a 2-dimensional array with every information of an object. ; Beschreibung ..: Liefert ein 2-dimensionales Array mit allen Informationen über ein Objekt. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetObjectInfo([$sObject = "window"]) ; Parameter(s): .: $sObject - Optional: (Default = "window") : ; Return Value ..: Success - Array with object information ; Failure - ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 23:05:55 CET 2009 @962 /Internet Time/ ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFGetObjectInfo($sObject = "window") Local Const $sFuncName = "_FFGetObjectInfo" Local $aRet[1][2], $aTmp If StringLeft($sObject, 1) = "." Then $sObject = "window.content.document" & $sObject Local $aInfo = StringSplit(_FFCmd("repl.inspect(" & $sObject & ");"), @CRLF, 2) If Not @error And IsArray($aInfo) And $aInfo <> "_FFCmd_Err" Then ReDim $aRet[UBound($aInfo)][2] For $i = 0 To UBound($aInfo) - 1 $aTmp = StringRegExp($aInfo[$i], "<object>.(.*?)=(.*?)$", 3) If Not @error And IsArray($aTmp) Then $aRet[$i][0] = $aTmp[0] $aRet[$i][1] = $aTmp[1] EndIf Next Return $aRet Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, $sObject)) Return $aRet[0][0] = 0 EndIf EndFunc ;==>_FFGetObjectInfo ; #FUNCTION# =================================================================== ; Name ..........: _FFGetPosition ; Description ...: Returns an array with the position of an element and/or the position and size of the FireFox content area, relative to the client area of the window ; Beschreibung ..: Liefert ein Array mit der Position eines Elementes und/oder die Position und Größe des FireFox-Inhalts, relativ zur Client Area des Fensters ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetPosition([$sElement = ""]) ; Parameter(s): .: $sElement - Optional: (Default = "") : Element or FFau3 - object. ; An empty string returns only the position and size of the content area ; Return Value ..: Success - array with the position and sizes ; | [0] = X position of the element (relative to the document) ; | [1] = Y position of the element (relative to the document) ; | [2] = X position of the content area (relative to the window client) ; | [3] = Y position of the content area (relative to the window client) ; | [4] = width of the content area ; | [6] = height of the content area ; Failure - ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Feb 04 18:49:07 CET 2010 ; Link ..........: https://developer.mozilla.org/en/Accessibility/AT-APIs/MSAA/FindWindow ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFGetPosition($sElement = "") Local Const $sFuncName = "_FFGetPosition" Local $aElement[2] = [-1, -1] If StringLeft(_FFCmd(".location.href"), 7) = "chrome:" Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Can't get position from chrome-address")) Return EndIf If $sElement <> "" Then If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) If StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElement Local $sPos = _FFCmd("FFau3.findPos(" & $sElement & ")") If $sPos <> "_FFCmd_Err" Then $aElement = StringSplit($sPos, ' ', 2) Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement not found: " & $sElement)) Return EndIf EndIf ; Local $aContent = ControlGetPos(_FFCmd(".title"), "", "[CLASS:MozillaContentWindowClass]") Local $aContent = ControlGetPos(_FFCmd(".title"), "", _FFWindowGetHandle()) If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "Cant find 'MozillaContentWindowClass'-control " & @error)) Local $aContent[4] = [-1, -1, -1, -1] EndIf Local $aRet[6] = [$aElement[0], $aElement[1], $aContent[0], $aContent[1], $aContent[2], $aContent[3]] Return $aRet EndFunc ;==>_FFGetPosition ; #FUNCTION# =================================================================== ; Name ..........: _FFOpenURL ; Description ...: Opens a new URL ; Beschreibung ..: Öffnet eine URL. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFOpenURL($sURL[, $bLoadWait = True]) ; Parameter(s): .: $sURL - URL or chrome (shortcut) ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:18:56 CET 2011 @763 /Internet Time/ ; Link ..........: ; Related .......: _FFTabAdd ; Example .......: Yes ; ============================================================================== Func _FFOpenURL($sURL, $bLoadWait = True) Local Const $sFuncName = "_FFOpenURL" If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0 EndIf If StringLeft($sURL, 7) = "chrome:" Then $sURL = __FFChromeSelect(StringMid($sURL, 8)) ConsoleWrite("_FFOpenURL: " & $sURL & @CRLF) Local $sRetVal = _FFCmd(StringFormat(".location.href='%s'", $sURL)) If Not @error And $sRetVal = $sURL Then If $bLoadWait Then $sRetVal = _FFLoadWait() Else $sRetVal = 1 EndIf __FFSetTopDocument() Return $sRetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, $sURL)) Return 0 EndIf EndFunc ;==>_FFOpenURL ; #FUNCTION# =================================================================== ; Name ..........: _FFPrefReset ; Description ...: Resets a config entry ; Beschreibung ..: Setzt einen Eintrag in der Config zurück ; Syntax ........: _FFPrefReset($sName) ; Parameter(s): .: $sName - Name of the config entry ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Modified ......: Wed Mar 25 18:06:53 CET 2009 @754 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/nsIPrefBranch, http://kb.mozillazine.org/About:config_entries ; Related .......: _FFPrefSet, _FFPrefGet ; Example .......: Yes ; ============================================================================== Func _FFPrefReset($sName) Local Const $sFuncName = "_FFPrefReset" Local $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);FFau3.obj.getPrefType("' & $sName & '");') If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sName: " & $sName)) Return 0 EndIf If $iType <> 0 Then If Not _FFCmd('FFau3.obj.prefHasUserValue("' & $sName & '");') Then Return 1 _FFCmd('FFau3.obj.clearUserPref("' & $sName & '");') If Not @error Then Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName)) EndIf Return 0 EndFunc ;==>_FFPrefReset ; #FUNCTION# =================================================================== ; Name ..........: _FFPrefGet ; Description ...: Gets a config entry ; Beschreibung ..: Ließt einen Wert aus der Config aus ; Syntax ........: _FFPrefGet($sName) ; Parameter(s): .: $sName - Name of the config entry ; Return Value ..: Success - Value of the entry ; Failure - 0 and sets @error ; @ERROR - ; Author(s) .....: Thorsten Willert ; Modified ......: Wed Mar 25 18:06:59 CET 2009 @754 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/nsIPrefBranch, http://kb.mozillazine.org/About:config_entries ; Related .......: _FFPrefSet, _FFPrefReset ; Example .......: Yes ; ============================================================================== Func _FFPrefGet($sName) Local Const $sFuncName = "_FFPrefGet" Local $sCommand Local $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); FFau3.obj.getPrefType("' & $sName & '");') If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, $sName)) Return 0 EndIf Switch $iType Case 0 SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName)) Return 0 Case 32 ; PREF_STRING $sCommand = "getCharPref" Case 64 ; PREF_INT $sCommand = "getIntPref" Case 128 ; PREF_BOOL $sCommand = "getBoolPref" EndSwitch $sCommand = StringFormat('FFau3.obj.%s("%s");', $sCommand, $sName) Return _FFCmd($sCommand) EndFunc ;==>_FFPrefGet ; #FUNCTION# =================================================================== ; Name ..........: _FFPrefSet ; Description ...: Sets a config entry ; Beschreibung ..: Setzt einen Wert in der Config. ; Syntax ........: _FFPrefSet($sName, $vValue) ; Parameter(s): .: $sName - Name of the config entry ; $vValue - Value of the config entry ; Return Value ..: Success - 1 and sets @EXTENDED ; Failure - 0 ; @ERROR - ; @EXTENDED - Old value ; Author(s) .....: Thorsten Willert ; Modified ......: Wed Mar 25 18:07:07 CET 2009 @754 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/nsIPrefBranch, http://kb.mozillazine.org/About:config_entries ; Related .......: _FFPrefGet, _FFPrefReset ; Example .......: Yes ; ============================================================================== Func _FFPrefSet($sName, $vValue) Local Const $sFuncName = "_FFPrefSet" Local $sCommand Local $iType = _FFCmd('FFau3.obj=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);FFau3.obj.getPrefType("' & $sName & '");') If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, $sName)) Return 0 EndIf Local $vOldValue = _FFPrefGet($sName) Switch $iType Case 0 SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sName: " & $sName)) Return 0 Case 32 ; PREF_STRING If Not IsString($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(string) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s","%s");', "setCharPref", $sName, $vValue) Case 64 ; PREF_INT If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s",%s);', "setIntPref", $sName, $vValue) Case 128 ; PREF_BOOL If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $sCommand = StringFormat('FFau3.obj.%s("%s",%s);', "setBoolPref", $sName, __FFB2S($vValue)) EndSwitch _FFCmd($sCommand) If Not @error Then Local $vRetVal = _FFPrefGet($sName) If Not @error And $vRetVal = $vValue Then SetExtended($vOldValue) Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "$vValue <> " & $vRetVal)) Return 0 EndIf EndIf Return 0 EndFunc ;==>_FFPrefSet ; #FUNCTION# =================================================================== ; Name ..........: _FFQuit ; Description ...: Quits FireFox ; Beschreibung ..: Schließt FireFox ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFQuit() ; Parameter(s): .: ; Return Value ..: Success - 1 / $_FF_GLOBAL_SOCKET = -1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 13 08:39:32 CEST 2013 @319 /Internet-Zeit/ ; Link ..........: ; Related .......: _FFDisConnect ; Example .......: Yes ; ============================================================================== Func _FFQuit() Local Const $sFuncName = "_FFQuit" If $_FF_GLOBAL_SOCKET = -1 Then Return If Not __FFIsSocket($_FF_GLOBAL_SOCKET) Then SetError(__FFError($sFuncName, $_FF_ERROR_SocketError)) Return 0 EndIf TCPSend($_FF_GLOBAL_SOCKET, "goQuitApplication()" & @CRLF) ; close() If Not @error Then $_FF_FRAME = "top" $_FF_GLOBAL_SOCKET = -1 If $_FF_COM_TRACE Then ConsoleWrite('__FFQuit: Closing FireFox ...' & @CRLF) Return 1 Else Return 0 EndIf EndFunc ;==>_FFQuit ; #FUNCTION# =================================================================== ; Name ..........: _FFReadHTML ; Description ...: Returns the HTML-source code of a page. ; Beschreibung ..: Liefert den HTMl-Quellcode einer Seite. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFReadHTML([$sMode = "body"[, $iFilter = 0]]) ; Parameter(s): .: $sMode - Optional: (Default = "body") : ; | body = innerHTML from <body> ; | html = innerHTML from <html> ; $iFilter - Optional: (Default = 0) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - String with the HTML-source code ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:55:56 CET 2009 @955 /Internet Time/ ; Link ..........: ; Related .......: _FFReadText, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFReadHTML($sMode = "body", $iFilter = 0) Local Const $sFuncName = "_FFReadHTML" Local $sCommand Switch StringLower($sMode) Case "body" $sCommand = ".body" Case "html" $sCommand = ".documentElement" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(body|html) $sMode: " & $sMode)) Return 0 EndSwitch Local $sRetVal = _FFCmd($sCommand & ".innerHTML;", 10000) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then $sRetVal = __FFFilterString($sRetVal, $iFilter) Return $sRetVal Else SetError(1) Return "" EndIf EndFunc ;==>_FFReadHTML ; #FUNCTION# =================================================================== ; Name ..........: _FFReadText ; Description ...: Returns the text of a page. ; Beschreibung ..: Liefert den Text einer Seite. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFReadText([$iFilter = 0]) ; Parameter(s): .: $iFilter - Optional: (Default = 0) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - String ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:55:05 CET 2009 @954 /Internet Time/ ; Link ..........: ; Related .......: _FFReadHTML, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFReadText($iFilter = 0) ;Local Const $sFuncName = "_FFReadText" Local $sRetVal = _FFCmd(".documentElement.textContent;", 10000) If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then $sRetVal = __FFFilterString($sRetVal, $iFilter) Return $sRetVal Else SetError(1) Return "" EndIf EndFunc ;==>_FFReadText ; #FUNCTION# =================================================================== ; Name ..........: _FFSearch ; Description ...: Searches a string ; Beschreibung ..: Sucht einen Text. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFSearch($sSearchString[, $bCaseSensitive = False[, $bWholeWord = False[, $bSearchInFrames = True]]]) ; Parameter(s): .: $sSearchString - String to search ; $bCaseSensitive - Optional: (Default = false) : ; $bWholeWord - Optional: (Default = false) : ; $bSearchInFrames - Optional: (Default = true) : ; Return Value ..: Success - 1 ; Failure - 0 and sets ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:53:10 CET 2011 ; Link ..........: ; Related .......: _FFAction ; Example .......: Yes ; ============================================================================== Func _FFSearch($sSearchString, $bCaseSensitive = False, $bWholeWord = False, $bSearchInFrames = True) Local Const $sFuncName = "_FFSearch" Local $RetVal If $sSearchString = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String $sSearchString")) Return "" EndIf If ($bCaseSensitive = Default) Or ($bCaseSensitive = False) Then $bCaseSensitive = 'i' Else $bCaseSensitive = '' EndIf If ($bWholeWord = Default) Or ($bWholeWord = False) Then $bWholeWord = '' Else $bWholeWord = '\b' EndIf Local $sCMD = "FFau3.search=/" & $bWholeWord & $sSearchString & $bWholeWord & "/" & $bCaseSensitive & ";FFau3.search.test(FFau3.WCD.documentElement.textContent);" If $bSearchInFrames Then For $i = 0 To _FFGetLength("frames") _FFFrameEnter($i) $RetVal = _FFCmd($sCMD) If $RetVal Then _FFFrameLeave() ExitLoop EndIf _FFFrameLeave() Next Else $RetVal = _FFCmd($sCMD) EndIf If Not @error And $RetVal <> "_FFCmd_Err" Then Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearchString: " & $sSearchString)) Return 0 EndIf EndFunc ;==>_FFSearch ; #FUNCTION# =================================================================== ; Name ..........: _FFCmd ; Description ...: Send and receive data from Firefox. ; Beschreibung ..: Sendet und empfängt Daten von FireFox. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFCmd($sArg[, $iTimeOut = 30000[, $bTry = True[, $bRec = True]]]) ; Parameter(s): .: $sArg - Any JavaScript ; $iTimeOut - Optional: (Default = 30000) : ; $bTry - Optional: (Default = True) : adds try/catch to $sArg ; $bRec - Optional: (Default = True) : record command ; Return Value ..: Success - String ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 18 06:03:57 CEST 2009 @211 /Internet Time/ ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFCmd($sArg, $iTimeOut = 30000, $bTry = True) Local Const $sFuncName = "_FFCmd" Local $sRet If StringLeft($sArg, 1) = "." Then $sArg = "window.content.document" & $sArg If $bTry And Not StringInStr(StringLower($sArg), "try") Then $sArg = "try{" & $sArg & "}catch(e){'_FFCmd_Err';};" Local $sArgWrapped = StringReplace($sArg, "window.content.document", "window.content.wrappedJSObject.document") $sArg = StringReplace($sArg, "window.content.document", "window.content." & $_FF_FRAME & ".document") $sArgWrapped = StringReplace($sArgWrapped, "window.content.wrappedJSObject.document", "window.content.wrappedJSObject." & $_FF_FRAME & ".document") If (Not StringInStr($sArg, ".frames[")) Or StringInStr($sArg, "evaluate") Or (Not StringRegExp($sArg, "\.[a-zA-z]+\(.*?\)(\[.+\])?\.", 0)) Then If __FFSend($sArg) Then $sRet = __FFRecv($iTimeOut) If Not @error Or String($sRet) <> "_FFCmd_Err" Then Return $sRet ElseIf StringInStr($sArgWrapped, "wrappedJSObject") Then __FFSend($sArgWrapped) $sRet = __FFRecv($iTimeOut) If Not @error And String($sRet) <> "_FFCmd_Err" Then Return $sRet EndIf EndIf Else __FFSend($sArgWrapped) $sRet = __FFRecv($iTimeOut) If Not @error And String($sRet) <> "_FFCmd_Err" Then Return $sRet EndIf SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, $sRet)) Return "" EndFunc ;==>_FFCmd ; #FUNCTION# =================================================================== ; Name ..........: _FFSetValue ; Description ...: Sets a value of an element ; Beschreibung ..: Setzt den Wert (value) eines Elements ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFSetValue($sValue, $sElement[, $sMode = "elements"[, $iIndex = 0]]) ; Parameter(s): .: $sElement - ; $sMode - Optional: (Default = "elements") : ; | elements: element or object from _FFXpath or _FFObj* ; | id ; | name ; | class ; | tag ; $iIndex - Optional: (Default = 0) : index if $sMode = class, name, tag ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 13:06:56 CET 2011 @546 /Internet Time/ ; Link ..........: ; Related .......: _FFSetValue, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFSetValue($sValue, $sElement, $sMode = "elements", $iIndex = 0) Local Const $sFuncName = "_FFSetValue" If Not IsInt($iIndex) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex)) Return 0 EndIf Switch StringLower($sMode) Case "elements" If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8) Case "id" $sElement = ".getElementById('" & $sElement & "')" Case "name" $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode)) Return 0 EndSwitch __FFValue2JavaScript($sValue) Local $sRetVal = _FFCmd($sElement & ".value='" & $sValue & "'") If Not @error And $sRetVal <> "_FFCmd_Err" Then _FFDispatchEvent($sElement, "change") Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement)) Return 0 EndIf EndFunc ;==>_FFSetValue ; #FUNCTION# =================================================================== ; Name ..........: _FFStart ; Description ...: Starts FireFox ; Beschreibung ..: Startet FireFox ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFStart([$sURL = "about:blank"[, $sProfile = "default"[, $iMode = 1[, $bHide = False[, $IP = "127.0.0.1"[, $iPort = 4242]]]]]]) ; Parameter(s): .: $sURL - Optional: (Default = "about:blank") : Start URL ; $sProfile - Optional: (Default = "default") : User profile ; $iMode - Optional: (Default = 1) : Start mode: ; | 0 = Connect to existing process ; | 1 = Start new process ; | 2 = Connect to an existing process, on failure start a new process ; | +8 = Starting FF with parameter -no-remote ; $bHide - Optional: (Default = False) : Start in hidden mode ; $IP - Optional: (Default = "127.0.0.1") : IP of MozRepl ; $iPort - Optional: (Default = 4242) : Port number of MozRepl ; Return Value ..: Success - 1 ; @EXTENDED - PID ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 30 22:10:07 CEST 2009 ; Link ..........: ; Related .......: _FFQuit, _FFConnect, _FFDisConnect, _FFIsConnected ; Example .......: Yes ; ============================================================================== Func _FFStart($sURL = "about:blank", $sProfile = "default", $iMode = 1, $bHide = False, $IP = "127.0.0.1", $iPort = 4242) Local Const $sFuncName = "_FFStart" ; Default parameters If $sURL = Default Then $sURL = "about:blank" If $IP = Default Then $IP = "127.0.0.1" If $iPort = Default Then $iPort = 4242 If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0 EndIf If Not __FFIsIP($IP) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(IP) $IP: " & $IP)) Return 0 EndIf If Not __FFIsPort($iPort) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(PORT) $iPort: " & $iPort)) Return 0 EndIf ; Default parameters If $sProfile = Default Then $sProfile = "default" If $iMode = Default Then $iMode = 1 If $bHide = Default Then $bHide = False Local $PID = -1, $bNoRemote = False If $iMode >= 8 Then $iMode -= 8 $bNoRemote = True EndIf Switch $iMode Case 2 ContinueCase Case 0 If ProcessExists($_FF_PROC_NAME) Then _FFConnect($IP, $iPort) If $_FF_GLOBAL_SOCKET > -1 Then _FFOpenURL($sURL) ElseIf $iMode = 2 Then ContinueCase EndIf Case 1 __FFStartProcess($sURL, True, $sProfile, $bNoRemote, $bHide, $iPort) $PID = @extended If ProcessExists($_FF_PROC_NAME) Then _FFConnect($IP, $iPort) If $_FF_GLOBAL_SOCKET > -1 Then _FFLoadWait() Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$iMode: " & $iMode)) Return 0 EndSwitch If $bHide Then Local $hWin = _FFWindowGetHandle() WinSetState($hWin, "", @SW_HIDE) EndIf SetExtended($PID) Return 1 EndFunc ;==>_FFStart ; #FUNCTION# =================================================================== ; Name ..........: _FFTabAdd ; Description ...: Opens a new tab. ; Beschreibung ..: Öffnet einen neuen Tab ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabAdd([$sURL = "about:blank"[, $bSelect = True[, $bLoadWait = True]]]) ; Parameter(s): .: $sURL - Optional: (Default = "about:blank") : ; $bSelect - Optional: (Default = true) : Select new tab ; $bLoadWait - Optional: (Default = true) : Wait while the page is loading ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:18:02 CET 2011 @762 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabAdd($sURL = "about:blank", $bSelect = True, $bLoadWait = True) Local Const $sFuncName = "_FFOpenURL" If $sURL = Default Then $sURL = "about:blank" If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0 EndIf If $bSelect Then _FFCmd("gBrowser.selectedTab = gBrowser.addTab('" & $sURL & "')", 3000) Else _FFCmd("gBrowser.loadOneTab('" & $sURL & "',null,null,null,true)", 3000) EndIf If Not @error Then Sleep(1000) __FFSetTopDocument() If $bLoadWait Then Return _FFLoadWait() Return 1 EndIf Return 0 EndFunc ;==>_FFTabAdd ; #FUNCTION# =================================================================== ; Name ..........: _FFTabClose ; Description ...: Closes one or all existing tabs. ; Beschreibung ..: Schließt einen oder alle vorhandenen Tabs. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabClose([$vTab = -1[, $sMode = "index"]]) ; Parameter(s): .: $vTab - Optional: (Default = -1 = current tab) : ; | index (0-n) ; | label ; | prev ; | next ; | first ; | last ; | all (except current) ; $sMode - Optional: (Default = "index") : ; | index ; | label ; | key or keyword ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:17:30 CET 2011 @762 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabClose($vTab = -1, $sMode = "index") Local Const $sFuncName = "_FFTabClose" Local $sCommand ;Local $bWarn Local $iLength = _FFGetLength("tabs") Switch StringLower($sMode) Case "index" If $vTab = -1 Then $sCommand = "gBrowser.removeCurrentTab();" ElseIf $vTab > -1 And $vTab < $iLength Then $sCommand = "gBrowser.removeTab(gBrowser.mTabs[" & $vTab & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $vTab: " & $vTab)) Return 0 EndIf Case "label" If _FFTabExists($vTab) Then $sCommand = "gBrowser.removeTab(gBrowser.mTabs[" & @extended & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vTab: " & $vTab)) Return 0 EndIf Case "key", "keyword" Switch StringLower($vTab) Case "prev" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.selectedIndex-1]);" Case "next" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.selectedIndex+1]);" Case "first" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[0]);" Case "last" $sCommand = "gBrowser.removeTab(gBrowser.mTabs[gBrowser.tabContainer.childNodes.length-1]);" Case "all" ; browser.tabs.warnOnClose $sCommand = "gBrowser.removeAllTabsBut(gBrowser.selectedTab);" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(prev|next|first|last|all) $vTab: " & $vTab)) Return 0 EndSwitch Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label|key|keyword) $sMode: " & $sMode)) Return 0 EndSwitch If _FFCmd($sCommand & "gBrowser.tabContainer.childNodes.length", 3000) < $iLength - 1 Then Sleep(100) __FFSetTopDocument() Return 1 EndIf Return 0 EndFunc ;==>_FFTabClose ; #FUNCTION# =================================================================== ; Name ..........: _FFTabDuplicate ; Description ...: Duplicates a tab ; Beschreibung ..: Dupliziert einen Tab ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabDuplicate([$vTab = -1[, $sMode = "index"[, $bSelect = False]]]) ; Parameter(s): .: $vTab - Optional: (Default = -1) : Tab to duplicate, -1 = current tab ; $sMode - Optional: (Default = "index") : ; | index ; | label ; $bToFront - Optional: (Default = false) : Bring duplicated tab to front ; Return Value ..: Success - Lenght of tabs >= 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Aug 03 16:13:08 CEST 2009 ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabDuplicate($vTab = -1, $sMode = "index", $bSelect = False) Local Const $sFuncName = "_FFTabDuplicate" If $sMode = "index" And Not IsInt($vTab) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vTab: " & $vTab)) Return 0 EndIf If $vTab = Default Then $vTab = -1 If $sMode = Default Then $sMode = "index" Local $iRet Local $sCommand Switch StringLower($sMode) Case "index" If $vTab = -1 Then $sCommand = "gBrowser.duplicateTab(gBrowser.mCurrentTab);" ElseIf $vTab >= 0 And $vTab < _FFGetLength("tabs") Then $sCommand = "gBrowser.duplicateTab(gBrowser.mTabs[" & $vTab & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$vTab: " & $vTab)) Return 0 EndIf Case "label" If _FFTabExists($vTab) Then $sCommand = "gBrowser.duplicateTab(gBrowser.mTabs[" & @extended & "]);" Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$vTab: " & $vTab)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label) $sMode: " & $sMode)) Return 0 EndSwitch $iRet = _FFCmd($sCommand & "gBrowser.tabContainer.childNodes.length;", 3000) If $bSelect Then _FFTabSetSelected("last") Return $iRet EndFunc ;==>_FFTabDuplicate ; #FUNCTION# =================================================================== ; Name ..........: _FFTabExists ; Description ...: Checks if a tab exists ; Beschreibung ..: Prüft ob ein Tab existiert. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabExists($sLabel) ; Parameter(s): .: $sLabel - Label of the tab (substring or RegEx) ; $sMode - Optional: (Default = "label") : ; Return Value ..: Success - 1 ; @EXTENDED - Index of the tab ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Jul 27 08:47:03 CEST 2009 ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabExists($sLabel, $sMode = "label") Local Const $sFuncName = "_FFTabExists" _FFLoadWait() Switch StringLower($sMode) Case "label" Local $RetVal = Int(_FFCmd("FFau3.SearchTab('" & $sLabel & "')", 3000)) Switch @error Case $_FF_ERROR_Success If $RetVal > -1 Then SetExtended($RetVal) Return 1 ElseIf $RetVal = -3 Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidExpression, "$sLabel: " & $sLabel)) Return 0 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sLabel: " & $sLabel)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError)) Return 0 EndSwitch Case "href" Local $RetVal = Int(_FFCmd("FFau3.SearchTabURL('" & $sLabel & "')", 3000)) Switch @error Case $_FF_ERROR_Success If $RetVal > -1 Then SetExtended($RetVal) Return 1 ElseIf $RetVal = -3 Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidExpression, "$sLabel: " & $sLabel)) Return 0 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sLabel: " & $sLabel)) Return 0 EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError)) Return 0 EndSwitch EndSwitch EndFunc ;==>_FFTabExists ; #FUNCTION# =================================================================== ; Name ..........: _FFTabSetSelected ; Description ...: Select a tab ; Beschreibung ..: Wählt ein Tab aus. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabSetSelected([$vTab = 0[, $sMode = "index"]]) ; Parameter(s): .: $vTab - Optional: (Default = 0) : ; | index (0-n) ; | label = Substring or RegEx ; | href ; | prev ; | next ; | first ; | last ; $sMode - Optional: (Default = "index") : ; | index ; | label ; | otherwise the keywords in $vTab are used ; Return Value ..: Success - ; Failure - -1 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 26 18:17:19 CET 2011 @762 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabSetSelected($vTab = 0, $sMode = "index") Local Const $sFuncName = "_FFTabSetSelected" Local $sCommand = "gBrowser.tabContainer" If $sMode = "index" Then $sCommand &= ".selectedIndex = " & $vTab ElseIf $sMode = "label" Or $sMode = "href" Then If _FFTabExists($vTab, $sMode) Then $sCommand &= ".selectedIndex = " & @extended Else Return -1 EndIf Else Switch StringLower($vTab) Case "prev" $sCommand &= ".advanceSelectedTab( -1, true )" Case "next" $sCommand &= ".advanceSelectedTab( 1, true )" Case "first" $sCommand &= ".selectedIndex = 0" Case "last" $sCommand &= ".selectedIndex = gBrowser.tabContainer.childNodes.length -1" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label|prev|next|first|last) $sMode: " & $sMode)) Return -1 EndSwitch EndIf Local $RetVal = _FFCmd($sCommand, 3000) Sleep(50) __FFSetTopDocument() Return $RetVal EndFunc ;==>_FFTabSetSelected ; #FUNCTION# =================================================================== ; Name ..........: _FFTabGetSelected ; Description ...: Returns the name or the index of the selected tab. ; Beschreibung ..: Gibt den Namen (label) oder den Index des aktuellen Tabs zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabGetSelected([$sMode = "index"]) ; Parameter(s): .: $sMode - Optional: (Default = "index") : ; | index ; | label ; Return Value ..: Success - Tab index 0-n or label ; Failure - -1 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 23 08:52:13 CEST 2009 @327 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabGetSelected($sMode = "index") Local Const $sFuncName = "_FFTabGetSelected" _FFLoadWait() Switch StringLower($sMode) Case "index" Return Int(_FFCmd("gBrowser.tabContainer.selectedIndex", 3000)) Case "label" Return _FFCmd("gBrowser.mTabs[gBrowser.tabContainer.selectedIndex].label", 3000) Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|label) $sMode: " & $sMode)) Return -1 EndSwitch EndFunc ;==>_FFTabGetSelected ; #FUNCTION# =================================================================== ; Name ..........: _FFTableWriteToArray ; Description ...: Writes a HTML-table to an array ; Beschreibung ..: Kopiert eine HTML-Tabelle in ein Array. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTableWriteToArray([$vTable = 0[, $sMode = "index"[, $sReturnMode = "text"[, $iFilter = 0[, $bTransponse = False]]]]]) ; Parameter(s): .: $vTable - Optional: (Default = 0) : Table selection by $sMode ; $sMode - Optional: (Default = "index") : ; | index (0-n) ; | name ; | id ; $sReturnMode - Optional: (Default = "text") : ; | text ; | html ; $iFilter - Optional: (Default = 0) : ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; $bTransponse - Optional: (Default = False) : Switch Rows and Columns ; Return Value ..: Success - Array containing contents of the table ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert, Johannes Schirmer ; Date ..........: Fri Sep 18 17:38:05 CEST 2009 @693 /Internet Time/ ; Link ..........: ; Related .......: _FFXpath ; Example .......: Yes ; ============================================================================== Func _FFTableWriteToArray($vTable = 0, $sMode = "index", $sReturnMode = "text", $iFilter = 0, $bTransponse = False) Local $sFuncName = "_FFTableWriteToArray" Local $sTable, $sRnd Local $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False Switch StringLower($sMode) Case "index" If IsInt($vTable) And $vTable < _FFGetLength("tables") Then $sTable = "//table[" & $vTable + 1 & "]" Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(INT) $vTable: " & $vTable)) Return 0 EndIf Case "name" $sTable = "//table[@name='" & $vTable & "']" Case "id" $sTable = "//table[@id='" & $vTable & "']" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sMode: " & $sMode)) Return 0 EndSwitch Switch StringLower($sReturnMode) Case "text" $sReturnMode = "textContent" Case "html" $sReturnMode = "innerHTML" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(text|html) $sReturnMode: " & $sReturnMode)) Return 0 EndSwitch If Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0 EndIf If Not IsBool($bTransponse) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(boolean) $bTransponse: " & $bTransponse)) Return 0 EndIf Local $iRows = _FFXPath($sTable & "//tr", Default, 10) If @error Or $iRows = 0 Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, $sTable & " not found.")) Return 0 EndIf Local $aCols If _FFXPath($sTable & "//@colspan", Default, 10) > 0 Or _FFXPath($sTable & "//@rowspan", Default, 10) > 0 Then Local $iColsTmp[$iRows + 1] Local $iCols = 0, $iSum, $iCol For $i = 1 To $iRows $iSum = 0 $aCols = _FFXPath($sTable & "//tr[" & $i & "]//td", "colSpan", 6) $iColsTmp[$i - 1] = $aCols[0] For $j = 1 To $aCols[0] $iSum += $aCols[$j] Next If $iSum > $iCols Then $iCols = $iSum Next Local $aTable[$iRows][$iCols] Local $iRow = 0 Local $sCMD, $aTmp For $i = 0 To $iRows $sRnd = "FF" & Random(100, 999, 1) $iCol = 0 If $iColsTmp[$i] < $iCols Then For $j = 0 To $iColsTmp[$i] - 1 $sCMD = "FFau3.xpath=window.content.document.evaluate('//tr[" & $i + 1 & "]//td[" & $j + 1 & "]',window.content.document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;FFau3.xpath." & $sReturnMode & "+'" & $sRnd & "'+FFau3.xpath.colSpan" $aTmp = StringSplit(_FFCmd($sCMD), $sRnd, 3) $aTable[$iRow][$iCol] = __FFFilterString($aTmp[0], $iFilter) $iCol += $aTmp[1] Next Else Local $aRows = _FFXPath($sTable & "//tr[" & $i + 1 & "]//td", $sReturnMode, 6, $iFilter) If $aRows[0] > 0 Then For $j = 1 To $aRows[0] $aTable[$i][$j - 1] = $aRows[$j] Next EndIf EndIf $iRow += 1 Next Else $iCols = _FFXPath($sTable & "//tr[last()]//td", Default, 10) Local $aTable[$iRows][$iCols] If $iCols > $iRows Then For $i = 0 To $iRows - 1 $aCols = _FFXPath($sTable & "//tr[" & $i + 1 & "]//td", $sReturnMode, 6, $iFilter) If $aCols[0] > 0 Then For $j = 0 To $iCols - 1 $aTable[$i][$j] = $aCols[$j + 1] Next EndIf Next Else For $i = 0 To $iCols - 1 $aRows = _FFXPath($sTable & "//tr//td[" & $i + 1 & "]", $sReturnMode, 6, $iFilter) If $aRows[0] > 0 Then For $j = 0 To $iRows - 1 $aTable[$j][$i] = $aRows[$i + 1] Next EndIf Next EndIf EndIf If $bTransponse Then Local $iD1 = UBound($aTable, 1), $iD2 = UBound($aTable, 2), $aTmp[$iD2][$iD1] For $i = 0 To $iD2 - 1 For $j = 0 To $iD1 - 1 $aTmp[$i][$j] = $aTable[$j][$i] Next Next $aTable = $aTmp EndIf $_FF_COM_TRACE = $bTrace Return $aTable EndFunc ;==>_FFTableWriteToArray ; #FUNCTION# =================================================================== ; Name ..........: _FFWindowClose ; Description ...: Closes a browser window ; Beschreibung ..: Schließt ein Browser Fenster. ; Syntax ........: _FFWindowClose([$sSearch = ""[, $sSearchMode = "title"]]) ; Parameter(s): .: $sSearch - Optional: (Default = "") : "" = current window, Substring to search ; $sSearchMode - Optional: (Default = "title") : ; | "title" window title ; | "label" tab label ; | "href" current url ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:33:01 CET 2009 @939 /Internet Time/ ; Link ..........: https://developer.mozilla.org/En/DOM/Window, https://developer.mozilla.org/En/NsIWindowMediator ; Related .......: _FFWindowSelect, _FFWindowOpen ; Example .......: Yes ; ============================================================================== Func _FFWindowClose($sSearch = "", $sSearchMode = "title") Local Const $sFuncName = "_FFWindowClose" If $sSearch = "" Then _FFCmd("window.close();") Return @error EndIf Switch StringLower($sSearchMode) Case "title", "label", "href" ; current href Local $sRetVal = _FFCmd(StringFormat("FFau3.CloseWin('%s','%s')", $sSearch, $sSearchMode)) If Not @error And $sRetVal = 1 Then Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearch: " & $sSearch)) EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(title|label|href) $sSearchMode: " & $sSearchMode)) EndSwitch Return 0 EndFunc ;==>_FFWindowClose ; #FUNCTION# =================================================================== ; Name ..........: _FFWindowGetHandle ; Description ...: Returns the window-handle (hwnd) from the current browser-window. ; Beschreibung ..: Liefert das Window-handle (hwnd) des aktuellen Browser Fenster. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFWindowGetHandle() ; Parameter(s): .: ; Return Value ..: Success - Window handle ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Oct 18 21:35:12 CEST 2009 ; Link ..........: ; Related .......: _FFWindowClose, _FFWindowSelect, _FFWindowOpen ; Example .......: Yes ; ============================================================================== Func _FFWindowGetHandle() Local Const $sFuncName = "_FFWindowGetHandle" ; in the future to handle with XPCOM =#= Local $bErr = False Local $hWindow = "" BlockInput(1) ; =#= If Not @error Then Local $sTitleRnd = "FFAU3" & Random(1000000000, 9999999999, 1) _FFCmd("FFau3.tmp=document.title;document.title='" & $sTitleRnd & "'") Local $iMatchMode = AutoItSetOption("WinTitleMatchMode", 1) Sleep(500) $hWindow = WinGetHandle($sTitleRnd) If @error Then $bErr = True BlockInput(0) AutoItSetOption("WinTitleMatchMode", $iMatchMode) _FFCmd("document.title=FFau3.tmp") ConsoleWrite("_FFWindowGetHandle: " & $hWindow & @CRLF) EndIf BlockInput(0) If $bErr Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError)) Return $hWindow EndFunc ;==>_FFWindowGetHandle ; #FUNCTION# =================================================================== ; Name ..........: _FFWindowSelect ; Description ...: Selects the active window for all other functions ; Beschreibung ..: Wählt das aktive Browser Fenster für alle nachfolgenden Befehle. ; Syntax ........: _FFWindowSelect([$sSearch = ""[, $sSearchMode = "title"[, $bActivate = True]]]) ; Parameter(s): .: $sSearch - Optional: (Default = "") : "" = most recent window, Substring to search ; $sSearchMode - Optional: (Default = "title") : ; | "title" window title ; | "label" tab label ; | "href" current url ; $bActivate - Optional: (Default = True) : ; Return Value ..: Success - 1 ; @EXTENDED - Window handle ; Failure - 0 ; @ERROR - ; @EXTENDED - "" ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:32:05 CET 2009 @938 /Internet Time/ ; Link ..........: https://developer.mozilla.org/En/DOM/Window, https://developer.mozilla.org/En/NsIWindowMediator ; Related .......: _FFWindowOpen, _FFWindowClose, _FFWindowGetHandle ; Example .......: Yes ; ============================================================================== Func _FFWindowSelect($sSearch = "", $sSearchMode = "title", $bActivate = True) Local Const $sFuncName = "_FFWindowSelect" Local $hWin = "" If $sSearch = "" Then Local $sCommand = 'Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser")' _FFCmd("repl.enter(" & $sCommand & ")") If Not @error Then $hWin = _FFWindowGetHandle() If Not @error And $bActivate Then WinActivate($hWin) SetExtended($hWin) Return 1 EndIf SetExtended($hWin) Return 0 EndIf Switch StringLower($sSearchMode) Case "title", "label", "href" Local $sRetVal = _FFCmd(StringFormat("FFau3.SelectWin('%s','%s','navigator:browser');", $sSearch, $sSearchMode)) If Not @error And $sRetVal = 1 Then $hWin = _FFWindowGetHandle() If Not @error And $bActivate Then WinActivate($hWin) SetExtended($hWin) Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sSearch: " & $sSearch), $hWin) EndIf Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(title|label|href) $sSearchMode: " & $sSearchMode), $hWin) EndSwitch SetExtended($hWin) Return 0 EndFunc ;==>_FFWindowSelect ; #FUNCTION# =================================================================== ; Name ..........: _FFWindowOpen ; Description ...: Opens a new browser window ; Beschreibung ..: Öffnet ein neues Browser Fenster. ; Syntax ........: _FFWindowOpen([$sURL = "about:blank"[, $bActivate = True[, $bLoadWait = True]]]) ; Parameter(s): .: $sURL - Optional: (Default = "about:blank") : ; $bActivate - Optional: (Default = True) ; $bLoadWait - Optional: (Default = True) : ; Return Value ..: Success - 1 and sets ; @EXTENDED - Window handle ; Failure - 0 and sets ; @ERROR - ; @EXTENDED - "" ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Nov 13 18:31:06 CET 2009 ; Link ..........: https://developer.mozilla.org/En/DOM/Window, https://developer.mozilla.org/En/NsIWindowMediator ; Related .......: _FFWindowSelect, _FFWindowClose, _FFWindowGetHandle ; Example .......: Yes ; ============================================================================== Func _FFWindowOpen($sURL = "about:blank", $bActivate = True, $bLoadWait = True) Local Const $sFuncName = "_FFWindowOpen" If Not __FFCheckURL($sURL) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL)) Return 0 EndIf Local $bTrace = $_FF_COM_TRACE $_FF_COM_TRACE = False ConsoleWrite("_FFWindowOpen: " & $sURL & @CRLF) _FFCmd("window.open('" & $sURL & "');") If $bLoadWait Then _FFLoadWait() If Not @error Then If _FFWindowSelect() Then Local $hWin = @extended If Not @error And $bActivate Then WinActivate($hWin) __FFSendJavaScripts() $_FF_COM_TRACE = $bTrace SetExtended($hWin) Return 1 EndIf EndIf $_FF_COM_TRACE = $bTrace SetExtended("") Return 0 EndFunc ;==>_FFWindowOpen ; #FUNCTION# =================================================================== ; Name ..........: _FFWriteHTML ; Description ...: Replaces the html of body element ; Beschreibung ..: Ersetzt das HTML des Body Elements. ; Syntax ........: _FFWriteHTML([$sHTML = ""[, $sMode = "body"]]) ; Parameter(s): .: $sHTML - Optional: (Default = "") : ; $sMode - Optional: (Default = "body") : ; | body ; | html ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:30:01 CET 2009 @937 /Internet Time/ ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFWriteHTML($sHTML = "", $sMode = "body") Local Const $sFuncName = "_FFWriteHTML" Local $sCommand Switch StringLower($sMode) Case "body" $sCommand = "body" Case "html" $sCommand = "documentElement" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(body|html) $sMode: " & $sMode)) Return 0 EndSwitch $sCommand = StringFormat("content.document.%s.innerHTML='" & $sHTML & "';", $sCommand) Local $sRetVal = _FFCmd($sCommand) If Not @error And $sRetVal <> "_FFCmd_Err" Then Return 1 Return 0 EndFunc ;==>_FFWriteHTML ; #FUNCTION# =================================================================== ; Name ..........: _FFXPath ; Description ...: Returns and sets values due to a XPath-query. ; Beschreibung ..: Abfrage und setzen von Werten anhand einer XPath-Abfrage. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFXPath($sQuery[, $sAttribute = ""[, $iReturnType = 9[, $iFilter = 0]]]) ; Parameter(s): .: $sQuery - XPath query ; $sAttribute - Optional: (Default = "") : attribute OR searchstring for SEARCH ; $iReturnType - Optional: (Default = 0) : ; | 0 = ANY_TYPE ; | 1 = NUMBER_TYPE (Returns numberValue) ; | 2 = STRING_TYPE (Return stringValue) ; | 3 = BOOLEAN_TYPE (Returns booleanValue) ; | 4 = UNORDERED_NODE_ITERATOR_TYPE - not implemented ; | 5 = ORDERED_NODE_ITERATOR_TYPE - not implemented ; | 6 = UNORDERED_NODE_SNAPSHOT_TYPE (Returns arrray) ; | 7 = ORDERED_NODE_SNAPSHOT_TYPE (Returns arrray) ; | 8 = ANY_UNORDERED_NODE_TYPE (Returns singleNodeValue) (Object in FFau3.xpath) ; | 9 = FIRST_ORDERED_NODE_TYPE (Returns singleNodeValue) (Object in FFau3.xpath) ; | 10 = COUNT (Returns the number of matches) ; | 11 = CONTAINS (stringValue contains substring in $sAttribute) (Returns booleanValue) ; | 12 = STARTS-WITH (stringValue start-with string in $sAttribute) (Returns booleanValue) ; | 13 = SUBSTRING-AFTER (stringValue substring-after in $sAttribute) ; | 14 = SUBSTRING-BEFORE (stringValue substring-bevore in $sAttribute) ; $iFilter - Optional: (Default = 0) : ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - Value $iReturnType 0-5 and 8-10 ; | Value $iReturnType 8-9 + object FFau3.xpath ; | Array $iReturnType 6-7 or if an attribute is set the number of the matches. ; Failure - 0 and sets ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Feb 16 19:43:55 CET 2010 ; Link ..........: http://www.w3.org/TR/xpath, https://developer.mozilla.org/en/XPath, https://developer.mozilla.org/En/XPathResult, https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript ; Related .......: _FFGetValue, _FFSetValue ; Example .......: Yes ; ============================================================================== Func _FFXPath($sQuery, $sAttribute = "", $iReturnType = 9, $iFilter = 0) Local Const $sFuncName = "_FFXPath" If $sQuery = "" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "Empty String $sQuery")) Return 0 EndIf If Not IsInt($iFilter) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iFilter: " & $iFilter)) Return 0 EndIf If $iReturnType < 10 And Not StringInStr($sAttribute, "=") And StringRegExp($sAttribute, "[\W]+") Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAttribute: " & $sAttribute)) Return 0 EndIf If $sAttribute = Default Then $sAttribute = "textContent" If $iReturnType = Default Then $iReturnType = 0 $sQuery = StringReplace($sQuery, '"', "'") Local $sResult, $sValue Switch StringLower($sAttribute) Case "textcontent" $sAttribute = "textContent" Case "innerhtml" $sAttribute = "innerHTML" EndSwitch Switch $iReturnType Case 0 $sResult = "ANY_TYPE" Case 1 $sResult = "NUMBER_TYPE" $sValue = ".numberValue" Case 2 $sResult = "STRING_TYPE" $sValue = ".stringValue" Case 3 $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" #cs - not implemented yet Case 4 $sResult = "UNORDERED_NODE_ITERATOR_TYPE" Case 5 $sResult = "ORDERED_NODE_ITERATOR_TYPE" #ce Case 6 $sResult = "UNORDERED_NODE_SNAPSHOT_TYPE" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 7 $sResult = "ORDERED_NODE_SNAPSHOT_TYPE" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 8 $sResult = "ANY_UNORDERED_NODE_TYPE" $sValue = ".singleNodeValue" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute Case 9 $sResult = "FIRST_ORDERED_NODE_TYPE" $sValue = ".singleNodeValue" If $sAttribute <> "" And StringLeft($sAttribute, 1) <> "." Then $sValue &= "." & $sAttribute ; no datatypes Case 10 $sQuery = "count(" & $sQuery & ")" $sResult = "NUMBER_TYPE" $sValue = ".numberValue" Case 11 $sQuery = "contains(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" Case 12 $sQuery = "starts-with(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "BOOLEAN_TYPE" $sValue = ".booleanValue" Case 13 $sQuery = "substring-after(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "STRING_TYPE" $sValue = ".stringValue" Case 14 $sQuery = "substring-before(" & $sQuery & ",'" & $sAttribute & "')" $sResult = "STRING_TYPE" $sValue = ".stringValue" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(int) $iReturnType: 0-9 10-14: " & $iReturnType)) Return 0 EndSwitch Local $sErrVal = "_FFXPath_Error: " Local $sCommand If $iReturnType < 6 Or $iReturnType >= 8 Then $sCommand = 'try{FFau3.xpath=FFau3.WCD.evaluate("' & $sQuery & '",FFau3.WCD,null,XPathResult.' & $sResult & ',null)' $sCommand &= $sValue & ";}catch(e){'" & $sErrVal & "'+e;};" ElseIf $iReturnType = 6 Or $iReturnType = 7 Then Local $sDelimiter = "FF" & Random(100, 999, 1) $sCommand = 'try{with(FFau3){' $sCommand &= 'this.obj=FFau3.WCD.evaluate("' & $sQuery & '",FFau3.WCD,null,XPathResult.' & $sResult & ',null);' $sCommand &= 'this.tmp=this.obj.snapshotLength;' If Not StringInStr($sAttribute, "=") Then $sCommand &= 'for(var i=0;i<this.obj.snapshotLength;i++){this.tmp+="' & $sDelimiter & '"+this.obj.snapshotItem(i)' & $sValue & ';};' Else $sCommand &= 'for(var i=0;i<this.obj.snapshotLength;i++){this.obj.snapshotItem(i)' & $sValue & ';};' EndIf $sCommand &= "this.tmp;}}catch(e){'" & $sErrVal & "' +e;};" EndIf Local $sRetVal = _FFCmd("FFau3.xpath=null;" & $sCommand) If Not StringInStr($sRetVal, $sErrVal) Then __FFFilterString($sRetVal, $iFilter) If $iFilter > 0 Then __FFFilterString($sRetVal, $iFilter) If $iReturnType = 6 Or $iReturnType = 7 Then Return StringSplit($sRetVal, $sDelimiter, 3) Else If $iReturnType < 10 And $sAttribute = "" Then Return "OBJECT|FFau3.xpath" Return StringStripWS($sRetVal, 3) EndIf Else If StringInStr($sRetVal, "TypeError") And StringInStr($sRetVal, "is null") Then SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "singleNodeValue is null $sQuery: " & $sQuery & " - " & $sAttribute)) ElseIf StringInStr($sRetVal, "NS_ERROR_DOM_INVALID_EXPRESSION_ERR") Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidExpression, "NS_ERROR_DOM_INVALID_EXPRESSION_ERR $sQuery: " & $sQuery)) Else SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, $sRetVal)) EndIf Return 0 EndIf EndFunc ;==>_FFXPath ; #FUNCTION# =================================================================== ; Name ..........: _FFObjGet ; Description ...: Returns an object (string to use with the other _FFObj* functions) ; Beschreibung ..: Liefert ein Object zurueck. (String zur Verwendung mit den anderen _FFObj* Funktionen) ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFObjGet($sElement[, $sMode = "id"[, $iIndex = 0]]) ; Parameter(s): .: $sElement - ; $sMode - Optional: (Default = "id") : ; | ID ; | Name + index ; | Class + index ; | Tag-name + index ; $iIndex - Optional: (Default = 0) : ; Return Value ..: Success - String (object to use in the _FFObj* functions) ; Failure - Epmty string ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Oct 16 19:08:02 CEST 2009 ; Link ..........: ; Related .......: _FFObj, _FFObjNew, _FFObjDelete, _FFClick ; Example .......: Yes ; ============================================================================== Func _FFObjGet($sElement, $sMode = "id", $iIndex = 0) Local Const $sFuncName = "_FFObjGet" Local $sRet Switch StringLower($sMode) Case "id" $sRet = ".getElementById('" & $sElement & "')" Case "name" $sRet = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]" Case "class" $sRet = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]" Case "tag" $sRet = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(id|name|class|tag) $sMode: " & $sMode)) Return "" EndSwitch Local $RetVal = _FFCmd("window.content.document" & $sRet & "?1:0;") If Not @error And $RetVal = 1 Then Return "OBJECT|" & $sRet Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement not found: " & $sElement)) Return "" EndIf EndFunc ;==>_FFObjGet ; #FUNCTION# =================================================================== ; Name ..........: _FFObj ; Description ...: Returns or sets an value of an attribute. ; Beschreibung ..: Liefert oder setzt den Wert eines Attributes. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFObj($sObject[, $sAttrib = ""[, $vValue = ""]]) ; Parameter(s): .: $sObject - Object or element in FireFox ; $sAttrib - Optional: (Default = "") : ; $vValue - Optional: (Default = "") : ; Return Value ..: Success - ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Oct 16 19:07:54 CEST 2009 ; Link ..........: ; Related .......: _FFObjGet, _FFObjNew, _FFObjDelete ; Example .......: Yes ; ============================================================================== Func _FFObj($sObject, $sAttrib = "", $vValue = "") Local Const $sFuncName = "_FFObj" If StringLeft($sObject, 7) = "OBJECT|" Then $sObject = StringMid($sObject, 8) If StringLeft($sObject, 1) = "." Then $sObject = "window.content.document" & $sObject If Not (StringInStr($sObject, "window.content") Or StringInStr($sObject, "FFau3.")) Then $sObject = "FFau3." & $sObject If $sAttrib <> "" Then If Not StringInStr($sAttrib, "(") Then _FFCmd($sObject & ".hasAttribute('" & $sAttrib & "')") If @error And $vValue <> "" Then ;SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "$sAttrib not found: " & $sAttrib)) _FFCmd($sObject & "setAttributeNode('" & $sAttrib & "')") EndIf EndIf $sObject &= "." & $sAttrib If IsInt($vValue) Then $sObject &= "=" & $vValue ElseIf IsBool($vValue) Then $sObject &= "=" & __FFB2S($vValue) ElseIf $vValue <> "" Then $sObject &= "='" & $vValue & "'" EndIf EndIf Local $RetVal = _FFCmd($sObject) If Not @error And $RetVal <> "_FFCmd_Err" Then Return $RetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sObject not found: " & $sObject)) Return "" EndIf EndFunc ;==>_FFObj ; #FUNCTION# =================================================================== ; Name ..........: _FFObjNew ; Description ...: Creates a new object in FireFox. ; Beschreibung ..: Erzeugt ein neues Object in FireFox. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFObjNew($sNewObject, $sObject) ; Parameter(s): .: $sNewObject - ; $sObject - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Apr 07 15:14:59 CEST 2009 ; Link ..........: ; Related .......: _FFObjGet, _FFObj, _FFObjDelete ; Example .......: Yes ; ============================================================================== Func _FFObjNew($sNewObject, $sObject) If StringRegExp($sNewObject, "[\W]+") Then Return 0 Local $RetVal = _FFCmd("try{FFau3." & $sNewObject & "=" & $sObject & "}catch(e){};FFau3." & $sNewObject & "?1:0;", 3000, False) Return SetError(Number($RetVal), @extended, $RetVal) EndFunc ;==>_FFObjNew ; #FUNCTION# =================================================================== ; Name ..........: _FFObjDelete ; Description ...: Deletes an object in FireFox. ; Beschreibung ..: Loescht ein Objekt in FireFox. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFObjDelete($sObject) ; Parameter(s): .: $sObject - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Apr 08 14:21:26 CEST 2009 @556 /Internet Time/ ; Link ..........: ; Related .......: _FFObjGet, _FFObjNew, _FFObj ; Example .......: Yes ; ============================================================================== Func _FFObjDelete($sObject) Local $sFFau3 = "simulateevent getlinkinfo getlinks searchimagebysize searchlink searchtab Searchtaburl closewin selectwin" If StringInStr($sFFau3, StringLower($sObject)) Then Return 0 Return _FFCmd("delete FFau3." & $sObject & ";!FFau3." & $sObject & "?1:0;") EndFunc ;==>_FFObjDelete ; #FUNCTION# =================================================================== ; Name ..........: _FFAu3Option ; Description ...: Sets and get options for the FF.au3 ; Beschreibung ..: Abfrage und Setzen von Optionen für die FF.au3 ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFAu3Option($sOption[, $vValue = ""]) ; Parameter(s): .: $sOption - LoadWaitTimeOut ; | SearchMode ; | ComTrace ; | ErrorMsgBox ; $vValue - Optional: (Default = "") : if noe value is given, the current value is returned ; | SearchMode 0 = SubString, 1 = Compare ; | LoadWaitTimeOut (int / min. 1000) ; | LoadWaitStop (bool) stop loading after LoadWaitTimeOut ; | ComTrace (bool) ; | ErrorMsgBox (bool) ; Return Value ..: Success - 1 / current value ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Feb 15 22:14:23 CET 2010 ; Link ..........: ; Related .......: ; Example .......: Yes ; ============================================================================== Func _FFAu3Option($sOption, $vValue = "") Local Const $sFuncName = "_FFOption" Switch $sOption Case "SearchMode" If $vValue == "" Then Return $_FF_SEARCH_MODE If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf If $vValue > 1 Then $vValue = 0 $_FF_SEARCH_MODE = $vValue Case "LoadWaitTimeOut" If $vValue == "" Then Return $_FF_LOADWAIT_TIMEOUT If Not IsInt($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vValue: " & $vValue)) Return 0 EndIf If $vValue < 1000 Then $vValue = 1000 $_FF_LOADWAIT_TIMEOUT = $vValue Case "LoadWaitStop" If $vValue == "" Then Return $_FF_LOADWAIT_STOP If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_LOADWAIT_STOP = $vValue Case "ComTrace" If $vValue == "" Then Return $_FF_COM_TRACE If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_COM_TRACE = $vValue Case "ErrorMsgBox" If $vValue == "" Then Return $_FF_ERROR_MSGBOX If Not IsBool($vValue) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(bool) $vValue: " & $vValue)) Return 0 EndIf $_FF_ERROR_MSGBOX = $vValue Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(SearchMode|LoadWaitTimeOut|ComTrace|ErrorMsgBox) $sOption" & $sOption)) EndSwitch Return 1 EndFunc ;==>_FFAu3Option ;=============================================================================== ; ; Internal Functions with names starting with two underscores will not be documented ; as user functions Func __FFSetTopDocument() $_FF_FRAME = 'top' __FFSend("FFau3.WCD=window.content.top.document;") Local $sRet = __FFRecv(2000) ConsoleWrite($sRet & @CRLF) Return EndFunc ;==>__FFSetTopDocument ; ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFRecv ; Description ...: ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFRecv([$iTimeOut = 10000]) ; Parameter(s): .: $iTimeOut - Optional: (Default = 10000) : TimeOut for __FFWaitForRepl ; Return Value ..: Success - Return value from MozRepl ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:27:52 CET 2009 @936 /Internet Time/ ; ============================================================================== Func __FFRecv($iTimeOut = 30000) Local $sRet = __FFWaitForRepl($iTimeOut) Local $iErr = @error $sRet = StringStripWS($sRet, 3) ; Removing leading and trailing " If StringLeft($sRet, 1) = '"' Then $sRet = StringTrimLeft($sRet, 1) If StringRight($sRet, 1) = '"' Then $sRet = StringTrimRight($sRet, 1) ; String to bool If $sRet = "true" Then $sRet = 1 ElseIf $sRet = "false" Then $sRet = 0 EndIf If $_FF_COM_TRACE Then ConsoleWrite("__FFRecv: " & $sRet & @CRLF) SetError($iErr) Return $sRet EndFunc ;==>__FFRecv ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFSend ; Description ...: ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFSend($sCommand) ; Parameter(s): .: $sCommand - String to send ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:26:09 CET 2009 @934 /Internet Time/ ; ============================================================================== Func __FFSend($sCommand) Local Const $sFuncName = "__FFSend" If Not __FFIsSocket($_FF_GLOBAL_SOCKET) Then SetError(__FFError($sFuncName, $_FF_ERROR_SocketError)) Return 0 EndIf TCPSend($_FF_GLOBAL_SOCKET, $sCommand & @CRLF) If Not @error Then If $_FF_COM_TRACE Then ConsoleWrite("__FFSend: " & $sCommand & @CRLF) Return 1 Else SetError(__FFError($sFuncName, $_FF_ERROR_SendRecv, "TCPSend: " & $sCommand)) Return 0 EndIf EndFunc ;==>__FFSend ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFChromeSelect ; Description ...: Some shortcuts for chrome ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFChromeSelect($sOpt) ; Parameter(s): .: $sOpt - Shortcut ; Return Value ..: Success - crome: + ....xul ; Failure - crome: + $sOpt ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Feb 14 12:33:16 CET 2009 @523 /Internet Time/ ; ============================================================================== Func __FFChromeSelect($sOpt) Local $sXUL Switch StringLower($sOpt) Case "bookmarks" $sXUL = "//browser/content/bookmarks/bookmarksPanel.xul" Case "history" $sXUL = "//browser/content/history/history-panel.xul" Case "extensions" $sXUL = "//mozapps/content/extensions/extensions.xul?type=extensions" Case "advanced-scripts" $sXUL = "//browser/content/preferences/advanced-scripts.xul" Case "changeaction" $sXUL = "//browser/content/preferences/changeaction.xul" Case "prefs" $sXUL = "//browser/content/preferences/preferences.xul" Case "colors" $sXUL = "//browser/content/preferences/colors.xul" Case "connection" $sXUL = "//browser/content/preferences/connection.xul" Case "cookies" $sXUL = "//browser/content/preferences/cookies.xul" Case "downloads" $sXUL = "//mozapps/content/downloads/downloads.xul" Case "downloadactions" $sXUL = "//browser/content/preferences/downloadactions.xul" Case "fonts" $sXUL = "//browser/content/preferences/fonts.xul" Case "languages" $sXUL = "//browser/content/preferences/languages.xul" Case "permissions" $sXUL = "//browser/content/preferences/permissions.xul" Case "sanitize" $sXUL = "//browser/content/preferences/sanitize.xul" Case "fireftp" $sXUL = "//fireftp/content/fireftp.xul" Case Else $sXUL = $sOpt EndSwitch Return "chrome:" & $sXUL EndFunc ;==>__FFChromeSelect ; #FUNCTION# =================================================================== ; Name ..........: __FFFilterString ; Description ...: Filter for strings ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFFilterString(ByRef $sString[, $iMode = 1]) ; Parameter(s): .: $sString - String to filter ; $iMode - Optional: (Default = 0) : removes nothing ; - 0 = no filter ; - 1 = removes non ascii characters ; - 2 = removes all double whitespaces ; - 4 = removes all double linefeeds ; - 8 = removes all html-tags ; - 16 = simple html-tag / entities convertor ; Return Value ..: Success - Filterd String ; Failure - Input String ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 21:26:43 CET 2011 @893 /Internet Time/ ; ============================================================================== Func __FFFilterString(ByRef $sString, $iMode = 0) If $iMode = 0 Then Return $sString ;16 simple HTML tag converter If BitAND($iMode, 16) Then Local $sRepl[2][6] = [["<br>", " ", ">", "<", "&", """], _ [@CRLF, " ", ">", "<", "&", '"']] $sString = StringRegExpReplace($sString, "<p.*>", @CRLF & @CRLF) For $i = 0 To UBound($sRepl, 2) - 1 $sString = StringReplace($sString, $sRepl[0][$i], $sRepl[1][$i]) Next EndIf ;8 Tag filter If BitAND($iMode, 8) Then $sString = StringRegExpReplace($sString, "<[^>]*>", "") EndIf ; 4 remove all double cr, lf If BitAND($iMode, 4) Then $sString = StringRegExpReplace($sString, "([ \t]*[\n\r]+[ \t]*)", @CRLF) $sString = StringRegExpReplace($sString, "[\n\r]+", @CRLF) EndIf ; 2 remove all double withespaces If BitAND($iMode, 2) Then $sString = StringRegExpReplace($sString, "[[:blank:]]+", " ") $sString = StringRegExpReplace($sString, "\n[[:blank:]]+", @CRLF) $sString = StringRegExpReplace($sString, "[[:blank:]]+\n", "") $iMode -= 2 EndIf ; 1 remove all non ASCII If BitAND($iMode, 1) Then $sString = StringRegExpReplace($sString, "[^\x00-\x7F]", " ") EndIf Return $sString EndFunc ;==>__FFFilterString ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFError ; Description ...: Writes Error to the console and show message-boxes if the script is compiled ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFError($sWhere, ByRef $i_FF_ERROR[, $sMessage = ""]) ; Parameter(s): .: $i_FF_ERROR - Error Const ; $sMessage - Optional: (Default = "") : Additional Information ; Return Value ..: Success - Error Const from $i_FF_ERROR ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Jul 18 11:52:36 CEST 2009 ; ============================================================================== Func __FFError($sWhere, Const ByRef $i_FF_ERROR, $sMessage = "") Local $sOut, $sMsg Sleep(200) Switch $i_FF_ERROR Case $_FF_ERROR_Success Return $_FF_ERROR_Success Case $_FF_ERROR_GeneralError $sOut = "General Error" Case $_FF_ERROR_SocketError $sOut = "Socket Error" Case $_FF_ERROR_InvalidDataType $sOut = "Invalid data type" Case $_FF_ERROR_InvalidValue $sOut = "Invalid value" Case $_FF_ERROR_Timeout $sOut = "Timeout" Case $_FF_ERROR_NoMatch $sOut = "No match" Case $_FF_ERROR_RetValue $sOut = "Error return value" Case $_FF_ERROR_SendRecv $sOut = "Error TCPSend / TCPRecv" Case $_FF_ERROR_ReplException $sOut = "MozRepl Exception" Case $_FF_ERROR_SendRecv $sOut = "Error TCPSend / TCPRecv" Case $_FF_ERROR_InvalidExpression $sOut = "Invalid Expression" EndSwitch If $sMessage = "" Then $sMsg = $sWhere & " ==> " & $sOut & @CRLF ConsoleWriteError($sMsg) If @Compiled Then If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg) DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg) EndIf Else $sMsg = $sWhere & " ==> " & $sOut & ": " & $sMessage & @CRLF ConsoleWriteError($sMsg) If @Compiled Then If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg) DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg) EndIf EndIf Return $i_FF_ERROR EndFunc ;==>__FFError ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFIsIP ; Description ...: IP4 check ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFIsIP(ByRef $IP[, $bSubstring = False]) ; Parameter(s): .: $IP - IPV4 Address Or IPV6 (HexCompressed/6Hex4Dec/Hex4DecCompressed) ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Sep 23 18:50:26 CEST 2013 @743 /Internet-Zeit/ ; ============================================================================== Func __FFIsIP(ByRef $IP, $bSubstring = False) Local $sStart = "" Local $sEnd = "" If Not $bSubstring Then $sStart = '^' $sEnd = "$" EndIf $IP = StringStripWS($IP, 3) Return StringRegExp($IP, $sStart & '(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])' & $sEnd) Or _ StringRegExp($IP, $sStart & '(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}' & $sEnd) Or _ ; IPV6 StringRegExp($IP, $sStart & '((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)' & $sEnd) Or _ ; IPV6 HexCompressed StringRegExp($IP, $sStart & '((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]||2[0-4]\d||[0-1]?\d?\d)(\.(25[0-5]||2[0-4]\d||[0-1]?\d?\d)){3}' & $sEnd) Or _ ; IPV6 6Hex4Dec StringRegExp($IP, $sStart & '((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]||2[0-4]\d||[0-1]?\d?\d)(\.(25[0-5]||2[0-4]\d||[0-1]?\d?\d)){3}' & $sEnd) ; IPV6 Hex4DecCompressed EndFunc ;==>__FFIsIP ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFIsPort ; Description ...: Port check ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFIsPort(ByRef $iPort) ; Parameter(s): .: $iPort - Port number 1024-65535 ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: 28. August 2007 ; ============================================================================== Func __FFIsPort(ByRef $iPort) Return (IsInt($iPort) And $iPort >= 1024 And $iPort <= 65535) EndFunc ;==>__FFIsPort ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFIsSocket ; Description ...: Socket check ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFIsSocket(ByRef $Socket) ; Parameter(s): .: $Socket - ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Tue Apr 07 11:08:05 CEST 2009 @422 /Internet Time/ ; ============================================================================== Func __FFIsSocket(ByRef $Socket) Return ($Socket > 0 And IsInt($Socket)) EndFunc ;==>__FFIsSocket ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFIsURL ; Description ...: URL check ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFIsURL(ByRef $URL) ; Parameter(s): .: $URL - http/https/ftp/about/chrome/file ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 13 08:36:54 CEST 2013 @317 /Internet-Zeit/ ; Link ..........: http://geekswithblogs.net/casualjim/archive/2005/12/01/61722.aspx ; ============================================================================== Func __FFIsURL(ByRef $URL) Return (StringRegExp($URL, '^^((ht|f)tp(s?)\:\/\/|~/|/)([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?') Or _ StringRegExp($URL, '^^((ht|f)tp(s?)\:\/\/|~/|/)(\d{1,3}\.){3}\d{1,3}(:[\d]{1,5})?(/.*)?$') Or _ StringLeft($URL, 6) = "about:" Or _ StringLeft($URL, 7) = "chrome:" Or _ StringLeft($URL, 10) = "localhost:" Or _ StringLeft($URL, 8) = "file:///") Or _ StringLeft($url, 7) = "http://" ; for intranet EndFunc ;==>__FFIsURL Func __FFCheckURL(ByRef $URL) If Not __FFIsURL($URL) Then If Not StringRegExp($URL, '^((ht|f)tp(s?)\:\/\/|~/|/)') Then $URL = "http://" & $URL EndIf Return __FFIsURL($URL) EndFunc ;==>__FFCheckURL ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFB2S ; Description ...: Bool to string ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFB2S($bBool) ; Parameter(s): .: $bBool - true / false ; Return Value ..: Success - String "true" or "false" ; Failure - "" ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 21:27:53 CET 2011 @894 /Internet Time/ ; ============================================================================== Func __FFB2S(ByRef $bBool) If $bBool Then Return "true" Return "false" EndFunc ;==>__FFB2S ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFValue2JavaScript ; Description ...: ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFValue2JavaScript(ByRef $sValue) ; Parameter(s): .: $sValue - ; Return Value ..: Success - ; Failure - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Apr 13 15:42:21 CEST 2009 ; ============================================================================== Func __FFValue2JavaScript(ByRef $sValue) If $sValue = "" Then Return "" Local $sTmp = "", $c $sValue = StringRegExpReplace($sValue, '([\\"''])', '\\$1') $sValue = StringReplace($sValue, @CRLF, "\n") $sValue = StringReplace($sValue, @CR, "\r") $sValue = StringReplace($sValue, @TAB, "\t") If StringRegExp($sValue, "[^\x00-\x7F]", 0) Then For $i = 0 To StringLen($sValue) $c = StringMid($sValue, $i, 1) If StringRegExp($c, "[^\x00-\x7F]", 0) Then $c = StringFormat("\\u%0000s", Hex(AscW($c), 4)) $sTmp &= $c Next $sValue = $sTmp EndIf Return $sValue EndFunc ;==>__FFValue2JavaScript ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFMultiDispatchEvent ; Description ...: Dispatches multiple events on one element ; AutoIt Version : V3.3.6.1 ; Syntax ........: __FFMultiDispatchEvent($sElement, $iEventType[, $iKeyCode = 13]) ; Parameter(s): .: $sElement - ; $iEventType - one or more of the following events: ; | $_FF_Event_Select ; | $_FF_Event_Focus ; | $_FF_Event_Blur ; | $_FF_Event_Resize ; | $_FF_Event_Keydown ; | $_FF_Event_Keypress ; | $_FF_Event_Keyup ; | $_FF_Event_Click ; $iKeyCode - Optional: (Default = 13) : ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Sun Mar 06 21:47:20 CET 2011 ; ============================================================================== Func __FFMultiDispatchEvent($sElement, $iEventType, $iKeyCode = 13) Local $iRet = 1 If BitAND($iEventType, $_FF_Event_Change) Then $iRet = $iRet And _FFDispatchEvent($sElement, "change", $iKeyCode) If BitAND($iEventType, $_FF_Event_Select) Then $iRet = $iRet And _FFDispatchEvent($sElement, "select", $iKeyCode) If BitAND($iEventType, $_FF_Event_Focus) Then $iRet = $iRet And _FFDispatchEvent($sElement, "focus", $iKeyCode) If BitAND($iEventType, $_FF_Event_Blur) Then $iRet = $iRet And _FFDispatchEvent($sElement, "blur", $iKeyCode) If BitAND($iEventType, $_FF_Event_Resize) Then $iRet = $iRet And _FFDispatchEvent($sElement, "resize", $iKeyCode) If BitAND($iEventType, $_FF_Event_Keydown) Then $iRet = $iRet And _FFDispatchEvent($sElement, "keydown", $iKeyCode) If BitAND($iEventType, $_FF_Event_Keypress) Then $iRet = $iRet And _FFDispatchEvent($sElement, "keypress", $iKeyCode) If BitAND($iEventType, $_FF_Event_Keyup) Then $iRet = $iRet And _FFDispatchEvent($sElement, "keyup", $iKeyCode) If BitAND($iEventType, $_FF_Event_Click) Then $iRet = $iRet And _FFDispatchEvent($sElement, "click", $iKeyCode) If BitAND($iEventType, $_FF_Event_MouseUp) Then $iRet = $iRet And _FFDispatchEvent($sElement, "mouseup", $iKeyCode) If BitAND($iEventType, $_FF_Event_MouseDown) Then $iRet = $iRet And _FFDispatchEvent($sElement, "mousedown", $iKeyCode) If BitAND($iEventType, $_FF_Event_MouseOver) Then $iRet = $iRet And _FFDispatchEvent($sElement, "mouseover", $iKeyCode) If BitAND($iEventType, $_FF_Event_MouseMove) Then $iRet = $iRet And _FFDispatchEvent($sElement, "mousemove", $iKeyCode) If BitAND($iEventType, $_FF_Event_MouseOut) Then $iRet = $iRet And _FFDispatchEvent($sElement, "mouseout", $iKeyCode) Return $iRet EndFunc ;==>__FFMultiDispatchEvent ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFSendJavaScripts ; Description ...: JavaScript functions ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFSendJavaScripts([$bRefresh = true[, $bTrace = False]]) ; Parameter(s): .: $bRefresh - Optional: (Default = false) : Send again to FF ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Dec 02 17:50:27 CET 2009 ; Link ..........: http://developer.mozilla.org/en/docs/DOM:event.initMouseEvent ; ============================================================================== Func __FFSendJavaScripts($bRefresh = True, $bTrace = False) Local $bTrc = $_FF_COM_TRACE $_FF_COM_TRACE = $bTrace If _FFCmd("repl.search(/FFau3/i)", 3000) = "FFau3" And Not $bRefresh Then $_FF_COM_TRACE = $bTrace Return 1 EndIf If $bRefresh Then _FFCmd('try{delete FFau3;}catch(e){e};') ConsoleWrite("__FFSendJavaScripts: Sending functions to FireFox .") _FFCmd('FFau3=new Object();FFau3.tmp="";FFau3.obj=null;FFau3.WCD=window.content.top.document;') ConsoleWrite(".") ; sEvent = MouseEvents | KeyboardEvent | Event ; sType: ; MouseEvents: click ; KeyboardEvent: keyup | keydown | keypress ; Event: change | select | focus | blur | resize ; args: oObject, sEvent, sType[, Key[, X[ ,Y]]] ; key = dec-ASCII-code ; X = clientX ; Y = clientY _FFCmd('FFau3.simulateEvent=function simulateEvent(a,b,c){try{var d=document.createEvent(b);switch(b){case"MouseEvents":d.initMouseEvent(c,true,true,window,0,0,0,simulateEvent.arguments[4],simulateEvent.arguments[5],false,false,false,false,0,null);break;case"KeyboardEvent":d.initKeyEvent(c,true,true,null,false,false,false,false,simulateEvent.arguments[3],0);break;case"Event":d.initEvent(c,true,true);break}a.dispatchEvent(d);return 1}catch(e){return-3}return 0};') #cs _FFCmd('FFau3.simulateEvent=function simulateEvent(oObject,sEvent,sType){' & _ 'try{ var evt=document.createEvent(sEvent);' & _ 'switch(sEvent){' & _ ' case "MouseEvents":' & _ ' evt.initMouseEvent(sType,true,true,window,0,0,0,simulateEvent.arguments[4],simulateEvent.arguments[5],false,false,false,false,0,null);break;' & _ ' case "KeyboardEvent":' & _ ' evt.initKeyEvent(sType,true,true,null,false,false,false,false,simulateEvent.arguments[3],0);break;' & _ ' case "Event":' & _ ' evt.initEvent(sType,true,true);break; }' & _ 'oObject.dispatchEvent(evt);' & _ 'return 1;' & _ '}catch(e){return -3;}return 0;};') #ce ConsoleWrite(".") ; GetLinkInfo(): JavaScript to get all informations about a link _FFCmd('FFau3.GetLinkInfo=function GetLinkInfo(i,a){var b="";with(FFau3.WCD){try{b=links[i].href+a;b+=links[i].hash+a;b+=links[i].search+a;b+=links[i].name+a;b+=links[i].id+a;b+=links[i].text+a;b+=links[i].innerHTML+a;b+=(links[i].hasAttribute("target")?links[i].target+a:a);b+=links[i].protocol+a;b+=links[i].port;return b.replace(/[\s]+/g," ")}catch(e){return-3}}};') #cs _FFCmd('FFau3.GetLinkInfo = function GetLinkInfo(i,sLimiter)' & _ '{ var info=""; with(FFau3.WCD) {' & _ 'try {' & _ 'info = links[i].href + sLimiter;' & _ 'info += links[i].hash + sLimiter;' & _ 'info += links[i].search + sLimiter;' & _ 'info += links[i].name + sLimiter;' & _ 'info += links[i].id + sLimiter;' & _ 'info += links[i].text + sLimiter;' & _ 'info += links[i].innerHTML + sLimiter;' & _ 'info += (links[i].hasAttribute("target") ? links[i].target + sLimiter : sLimiter);' & _ 'info += links[i].protocol + sLimiter;' & _ 'info += links[i].port;' & _ 'return info.replace(/[\s]+/g," ");' & _ '}catch(e){return -3;}' & _ '}};') #ce ConsoleWrite(".") ; GetLinks(): JavaScript to get an information of all links _FFCmd('FFau3.GetLinks=function GetLinks(a){var b="";with(FFau3.WCD){try{for(var i=0;i<links.length;i++){b+=this.GetLinkInfo(i,a)+"\n"}return b}catch(e){return-3}}};') #cs _FFCmd('FFau3.GetLinks = function GetLinks(sLimiter)' & _ '{ var res=""; with(FFau3.WCD) {try{' & _ 'for (var i=0;i<links.length;i++){res += this.GetLinkInfo(i,sLimiter) + "\n";}' & _ 'return res; } catch(e) {return -3;}}};') #ce ConsoleWrite(".") ; SearchImageBySize(): JavaScript _FFCmd('FFau3.SearchImageBySize=function SearchImageBySize(a,b,c,d){var e="";with(FFau3.WCD){for(var i=0;i<images.length;i++){var f=images[i].width;var g=images[i].height;switch(c){case"eq":if((f<=b+b/100*d&&g<=a+a/100*d&&f>=b-b/100*d&&g>=a-a/100*d))e+=" "+i;break;case"lt":if((f<=b&&g<=a)&&(f>=b-b/100*d&&g>=a-a/100*d))e+=" "+i;break;case"gt":if((f>=b&&g>=a)&&(f<=b+b/100*d&&g<=a+a/100*d))e+=" "+i;break;default:return-1}}return e}};') #cs _FFCmd('FFau3.SearchImageBySize = function SearchImageBySize(iH, iW, sMode, iP){' & _ 'var sRet=""; with(FFau3.WCD) {' & _ 'for (var i=0;i<images.length;i++){' & _ 'var iWidth=images[i].width;' & _ 'var iHeight=images[i].height;' & _ 'switch (sMode) {' & _ 'case "eq": if ((iWidth<=iW+iW/100*iP && iHeight<=iH+iH/100*iP && iWidth>=iW-iW/100*iP && iHeight>=iH-iH/100*iP)) sRet += " " + i; break;' & _ 'case "lt": if ((iWidth<=iW && iHeight<=iH) && (iWidth>=iW-iW/100*iP && iHeight>=iH-iH/100*iP)) sRet += " " + i; break;' & _ 'case "gt": if ((iWidth>=iW && iHeight>=iH) && (iWidth<=iW+iW/100*iP && iHeight<=iH+iH/100*iP)) sRet += " " + i; break;' & _ 'default: return -1}' & _ '} return sRet; } };') #ce ConsoleWrite(".") _FFCmd('FFau3.findPos=function findPos(a){try{var b=c=0;if(a.offsetParent){do{b+=a.offsetLeft;c+=a.offsetTop}while(a=a.offsetParent);return b+" "+c}}catch(e){return-3}}') #cs _FFCmd("FFau3.findPos = function findPos(obj){try{" & _ "var curleft=c=0;" & _ "if (obj.offsetParent) {" & _ "do {curleft+=obj.offsetLeft;" & _ " c+=obj.offsetTop;" & _ "} while (obj=obj.offsetParent);" & _ "return curleft+' '+c;" & _ "}}catch(e){return -3}}") #ce ConsoleWrite(".") ; SearchTab(); JavaScript to search a tab by label _FFCmd('FFau3.SearchTab=function SearchTab(a){try{for(var i=0;i<gBrowser.mTabs.length;i++){if(RegExp(a).test(gBrowser.mTabs[i].label))return i};return-1}catch(e){return-3}};') #cs _FFCmd('FFau3.SearchTab = function SearchTab(RegEx)' & _ '{try{' & _ 'for (var i=0;i<gBrowser.mTabs.length;i++){' & _ 'if (RegExp(RegEx).test(gBrowser.mTabs[i].label)) return i;};' & _ 'return -1;}catch(e){return -3;}};') #ce ConsoleWrite(".") ; SearchTabURL(); JavaScript to search a tab by href _FFCmd('FFau3.SearchTabURL=function SearchTabURL(a){try{for(var i=0;i<gBrowser.mTabs.length;i++){if(RegExp(a).test(gBrowser.mTabs[i].linkedBrowser.contentWindow.document.location.href))return i};return-1}catch(e){return-3}};') ; CloseWin() _FFCmd('FFau3.CloseWin=function CloseWin(a,b){var c;var d=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");while(d.hasMoreElements()){c=d.getNext();switch(b){case"title":if(c.title.indexOf(a)!=-1){c.close();return 1};break;case"label":if(FFau3.SearchTab(a)>-1){c.close();return 1};break;case"href":if(c.content.document.location.href.indexOf(a)!=-1){c.close();return 1}break;default:return-1}}return-1};') #cs _FFCmd('FFau3.CloseWin = function CloseWin(sSearch,sMode){' & _ 'var win;var enum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator("navigator:browser");' & _ 'while(enum.hasMoreElements() ){' & _ 'win=enum.getNext();' & _ 'switch(sMode){' & _ 'case "title": if (win.title.indexOf(sSearch) != -1){win.close();return 1;};break;' & _ 'case "label": if (FFau3.SearchTab(sSearch)>-1){win.close();return 1;};break;' & _ 'case "href": if (win.content.document.location.href.indexOf(sSearch) != -1){win.close();return 1;}break;' & _ 'default: return -1;' & _ '}}return -1;};') #ce ConsoleWrite(".") ; SelectWin() ; _FFCmd('FFau3.SelectWin=function SelectWin(a,b,c){var d;var e=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator(c);while(e.hasMoreElements()){d=e.getNext();switch(b){case"title":if(d.title.indexOf(a)!=-1){repl.enter(d);return 1};break;case"label":if(FFau3.SearchTab(a)>-1){repl.enter(d);return 1};break;case"href":if(d.content.document.location.href.indexOf(a)!=-1){repl.enter(d);return 1};break;default:return-1}}return-1};') ; WDP Rewrote to check individual tabs _FFCmd('FFau3.SelectWin=function SelectWin(a,b,c){var d;var e=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator(c);while(e.hasMoreElements()){d=e.getNext();switch(b){case"title":if(d.title.indexOf(a)!=-1){repl.enter(d);return 1};break;case"label":if(FFau3.SearchTab(a)>-1){repl.enter(d);return 1};break;case"href":for(var f=0; f < d.gBrowser.browsers.length; f++){var g=d.gBrowser.getBrowserAtIndex(f);if (RegExp(a).test(g.currentURI.spec)){repl.enter(g);return 1;}};break;default:return-1}}return-1};') #cs _FFCmd('FFau3.SelectWin = function SelectWin(sSearch,sMode,sType){' & _ 'var win;var enum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getEnumerator(sType);' & _ 'while(enum.hasMoreElements() ){' & _ 'win=enum.getNext();' & _ 'switch(sMode){' & _ 'case "title": if (win.title.indexOf(sSearch) != -1){repl.enter(win);return 1;};break;' & _ 'case "label": if (FFau3.SearchTab(sSearch)>-1){repl.enter(win);return 1;};break;' & _ 'case "href": if (win.content.document.location.href.indexOf(sSearch) != -1){repl.enter(win);return 1;};break;' & _ 'default: return -1};' & _ '}return -1;};') #ce ConsoleWrite(". done" & @CRLF) $_FF_COM_TRACE = $bTrc Return 1 EndFunc ;==>__FFSendJavaScripts ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFWaitForRepl ; Description ...: ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFWaitForRepl($iTimeOut) ; Parameter(s): .: $iTimeOut ; Return Value ..: Success - Return value from MozRepl ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Dec 04 11:48:08 CET 2009 ; ============================================================================== Func __FFWaitForRepl($iTimeOut) Local Const $sFuncName = @CRLF & "__FFWaitForRepl" Local $recv, $sRet = "", $TimeOutTimer = TimerInit() If $iTimeOut < 200 Then $iTimeOut = 200 While TimerDiff($TimeOutTimer) < $iTimeOut ; connection delay Sleep($_FF_CON_DELAY) $recv = TCPRecv($_FF_GLOBAL_SOCKET, 4096) ;ConsoleWrite($recv & @CRLF) ; TCP error If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_SendRecv, "TCPRecv :" & @error)) Return "" EndIf $sRet &= $recv ; error from MozRepl If StringRegExp($recv, "!!!(.*?)(TypeError|Exception|ReferenceError):?") Then $recv = StringLeft($recv, StringInStr($recv, "location") - 1) Sleep(200) SetError(__FFError($sFuncName, $_FF_ERROR_ReplException, StringStripWS($recv, 3))) __FFSend(";") ; MozRepl-Reset Sleep(200) Return "" ElseIf StringInStr($recv, "....>") Then __FFSend(";") ; MozRepl-Reset Sleep(200) SetError(__FFError($sFuncName, $_FF_ERROR_RetValue, "MozRepl ....>")) Return "" ElseIf StringInStr($recv, "beginning of the line to force evaluation") Then Sleep(500) ; first connection delay EndIf ; multiple connections to MozRepl (e.g repl2?> ...) If StringRegExp($recv, "repl[\d]*>") Then Return StringRegExpReplace($sRet, "repl[\d]*>", "") WEnd ; Timeout SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, Round(TimerDiff($TimeOutTimer)) & "ms > " & $iTimeOut & "ms $iTimeOut")) Return "" EndFunc ;==>__FFWaitForRepl ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __FFStartProcess ; Description ...: Starts the firefox.exe ; AutoIt Version : V3.3.0.0 ; Syntax ........: __FFStartProcess([$sURL = "about:blank"[, $bNewWin = False[, $sProfile = "default"[, $bNoRemote = False[, $bHide = False[, $iPort = 4242[, $iTimeOut = 30000]]]]]]]) ; Parameter(s): .: $sProfile - Optional: (Default = "default") : ; $bNewWin - Optional: (Default = false) : ; $bNoRemote - Optional: (Default = false) : ; $bHide - Optional: (Default = False) : ; $iPort - Optional: (Default = 4242) : ; $iTimeOut - Optional: (Default = 30000) : min. 2000ms ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; @EXTENDED - PID from the firefox.exe ; Author(s) .....: Thorsten Willert ; Date ..........: Wed Nov 04 16:01:59 CET 2009 ; ============================================================================== Func __FFStartProcess($sURL = "about:blank", $bNewWin = False, $sProfile = "default", $bNoRemote = False, $bHide = False, $iPort = 4242, $iTimeOut = 30000) Local Const $sFuncName = "__FFStartProcess" Local $PID = -1 Local $sNoRemote = "", $sNewWin Local $sProcName = $_FF_PROC_NAME If $sProfile = "default" Then $sProfile = '' Else $sProfile = ' -P "' & $sProfile & '"' EndIf If $bNoRemote Then $sNoRemote = "-no-remote" If $bNewWin Then $sNewWin = "-new-window" $sURL = '"' & $sURL & '"' If $iTimeOut < 2000 Then $iTimeOut = 2000 Local $sHKLM = 'HKEY_LOCAL_MACHINE\SOFTWARE\' If @OSArch <> 'X86' Then $sHKLM &= 'Wow6432Node\' $sHKLM &= 'Mozilla\Mozilla Firefox' Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe") If @error Then SetError(__FFError($sFuncName, $_FF_ERROR_GeneralError, "Error reading registry entry for FireFox." & @CRLF & _ $sHKLM & "\*CurrentVersion*\Main\PathToExe" & @CRLF & _ "Error from RegRead: " & @error)) Return 0 EndIf ; Updated per http://www.autoitscript.com/forum/topic/95595-ffau3-v0600b/page__st__380#entry958812 Local $sCommand = StringFormat('"%s" %s %s %s "-repl %i %s"', $sFFExe, $sNewWin, $sURL, $sNoRemote, $iPort, $sProfile) $PID = Run($sCommand) If $bHide Then BlockInput(1) Local $iTimeOutTimer = TimerInit() While 1 Sleep(2000) If ProcessExists($sProcName) Then ExitLoop If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Browser process not exists: " & $sProcName)) BlockInput(0) Return 0 EndIf WEnd If $bHide Then Local $WINTITLE_MATCH_MODE = AutoItSetOption("WinTitleMatchMode", 4) WinWaitActive("[CLASS:MozillaUIWindowClass]") Sleep(500) WinSetState("[CLASS:MozillaUIWindowClass]", "", @SW_MINIMIZE) BlockInput(0) AutoItSetOption("WinTitleMatchMode", $WINTITLE_MATCH_MODE) Else Sleep(1000) EndIf If $_FF_COM_TRACE Then ConsoleWrite('__FFStartProcess: "' & $sCommand & @CRLF) SetExtended($PID) Return 1 EndFunc ;==>__FFStartProcess FFex.au3 expandcollapse popup; :collapseFolds=0:maxLineLen=80:mode=autoitscript:tabSize=8:indentSize=8:folding=indent: #include-once #include <FF.au3> ; Wed Jan 27 16:51:09 CET 2010 @702 /Internet Time/ ; by Thorsten Willert #Region #CURRENT# ============================================================== ; _FFDisPatchKeyEvent ; _FFFormGetLength ; _FFGetValueById ; _FFGetValueByName ; _FFSetValueById ; _FFSetValueByName ; _FFTabCloseAll ; _FFTabGetLength ; _FFTableGetCell ; _FF_Call ; _FF_CookiesAllow ; _FF_CookiesDeny ; _FF_CookiesRemoveAll ; _FF_CookiesSetAccess ; _FF_EmptyCache ; _FF_EmptyCookies / _FF_CookiesRemoveAll ; _FF_EmptyHistory ; _FF_FormSetFileInput ; _FF_GetContentXY ; _FF_GetCurrentURL ; _FF_GetStatus ; _FF_GetTitle ; _FF_MozRepl_Detect ; _FF_ResetTitle ; _FF_TabGetAllTitles ; _FF_TabGetAllURLs ; _FF_TabReloadAll #EndRegion #CURRENT# ============================================================== ;=============================================================================== ; calls a JavaScript function on the current page ; use "CW" as shortcut for "content.wrappedJSObject" Func _FF_Call($sScript) If StringInStr($sScript, "CW.") Then $sScript = StringReplace($sScript, "CW.", "FFau3.tmp.") Return _FFCmd("FFau3.tmp=content.wrappedJSObject;" & $sScript) Else Return _FFCmd("content.wrappedJSObject." & $sScript) EndIf EndFunc ;==>_FF_Call ;=============================================================================== Func _FF_CookiesAllow($sURL) Return _FF_CookiesSetAccess($sURL, 1) EndFunc ;==>_FF_CookiesAllow ;=============================================================================== Func _FF_CookiesDeny($sURL) Return _FF_CookiesSetAccess($sURL, 2) EndFunc ;==>_FF_CookiesDeny ;=============================================================================== Func _FF_CookiesRemoveAll() _FFCmd('Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager).removeAll();') If Not @error Then Return 1 Return SetError(1, 0, 0) EndFunc ;==>_FF_CookiesRemoveAll ;=============================================================================== ; https://developer.mozilla.org/en/nsICookiePermission ; $iAccess: 0 = ACCESS_DEFAULT ; 1 = ACCESS_ALLOW ; 2 = ACCESS_DENY ; 8 = ACCESS_SESSION Func _FF_CookiesSetAccess($sURL, $iAccess) If __FFCheckURL($sURL) And ($iAccess = 0 Or $iAccess = 1 Or $iAccess = 2 Or $iAccess = 8) Then _FFCmd('Components.classes["@mozilla.org/cookie/permission;1"].getService(Components.interfaces.nsICookiePermission).setAccess(Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI("' & $sURL & '", null, null),' & $iAccess & ');') If Not @error Then Return 1 EndIf Return SetError(1, 0, 0) EndFunc ;==>_FF_CookiesSetAccess ;=============================================================================== Func _FF_EmptyCache() _FFCmd("Ci=Components.interfaces;Components.classes['@mozilla.org/network/cache-service;1'].getService(Ci.nsICacheService).evictEntries(Ci.nsICache.STORE_ANYWHERE);") If Not @error Then Return 1 Return 0 EndFunc ;==>_FF_EmptyCache ;=============================================================================== Func _FF_EmptyCookies() _FF_CookiesRemoveAll() EndFunc ;==>_FF_EmptyCookies ;=============================================================================== Func _FF_EmptyHistory() _FFCmd("Components.classes['@mozilla.org/browser/nav-history-service;1'].getService(Components.interfaces.nsIBrowserHistory).removeAllPages();") If Not @error Then Return 1 Return 0 EndFunc ;==>_FF_EmptyHistory ;=============================================================================== Func _FF_FormSetFileInput($sFile, $vInput = 0, $sInputMode = "index", $vForm = 0, $sFormMode = "index") Local $sInput, $sForm If Not FileExists($sFile) Then SetError(1) Return 0 EndIf Switch $sInputMode Case "index" If Not IsInt($vInput) Then SetError(1) Return 0 EndIf $sInput = $vInput + 1 Case "id", "name" $sInput = StringFormat("@type='file' and @%s='%s'", $sInputMode, $vInput) Case Else SetError(1) Return 0 EndSwitch Switch $sFormMode Case "index" If Not IsInt($vForm) Then SetError(1) Return 0 EndIf $sForm = $vForm + 1 Case "id", "name", "title" $sForm = StringFormat("@%s='%s'", $sFormMode, $vForm) Case Else SetError(1) Return 0 EndSwitch _FFXpath(StringFormat("//form[%s]//input[%s]", $sForm, $sInput), StringFormat("value='%s'", $sFile), 9) If Not @error Then Return 1 SetError(1, 0, 0) EndFunc ;==>_FF_FormSetFileInput ;=============================================================================== ; Returns an array with x/y/width/height of the content area Func _FF_GetContentXY() Return ControlGetPos(_FFCmd(".title"), "", "[CLASS:MozillaContentWindowClass]") EndFunc ;==>_FF_GetContentXY ;=============================================================================== Func _FF_GetCurrentURL() Return _FFCmd(".location.href") EndFunc ;==>_FF_GetCurrentURL ;=============================================================================== Func _FF_GetStatus() Return _FFCmd("XULBrowserWindow.statusTextField.label") EndFunc ;==>_FF_GetStatus ;=============================================================================== Func _FF_GetTitle() Return _FFCmd(".title") EndFunc ;==>_FF_GetTitle ; #FUNCTION# =================================================================== ; Name ..........: _FF_MozRepl_Detect ; Description ...: Checks a Firefox profile for the MozRepl extension and installes it if not available. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FF_MozRepl_Detect([$sProfil = "default"[, $bInstall = True[, $sXPI = "http://repo.hyperstruct.net/mozrepl/0.2/mozrepl.xpi"]]]) ; Parameter(s): .: $sProfil - Optional: (Default = "default") : ; $bInstall - Optional: (Default = True) : ; $sXPI - Optional: (Default = "http://repo.hyperstruct.net/mozrepl/0.2/mozrepl.xpi") : ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thunder-man (Frank Michalski), Thorsten Willert ; Date ..........: Fri Jul 17 13:05:21 CEST 2009 ; Version .......: 2.0 ; Example .......: No ; V 1.0 ==> 15.09.2007 ; V 1.1 ==> 02.08.2008, updated by Stilgar (Thorsten Willert) ; changed the path-macro to @AppDataDir ; changed the ""-profil to "default" ; V1.2 ==> 03.03.2009, updated by Stilgar (Thorsten Willert) ; changed MozLab to MozRepl ; V2.0 ==> 17.03.2009, added intall-option for MozRepl by Stilgar (Thorsten Willert) ; ============================================================================== Func _FF_MozRepl_Detect($sProfile = "default", $bInstall = True, $sXPI = "http://repo.hyperstruct.net/mozrepl/1.0/mozrepl.xpi") If $sProfile = "" Then $sProfile = "default" Local $sIni_Path = @AppDataDir & "\Mozilla\Firefox\" Local $var = IniReadSectionNames($sIni_Path & "\profiles.ini") If @error Then MsgBox(4096, "", "Error occurred, probably no Firefox INI file.") Else For $i = 1 To $var[0] Local $Ini_ = IniRead($sIni_Path & "\profiles.ini", $var[$i], "Name", "Error") If $Ini_ = $sProfile Then Local $sPath_folder = IniRead($sIni_Path & "\profiles.ini", $var[$i], "Path", "Error") ;Profile dir ExitLoop EndIf Next EndIf If $bInstall Then Local $sHKLM = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" Local $sFFExe = RegRead($sHKLM & "\" & RegRead($sHKLM, "CurrentVersion") & "\Main", "PathToExe") Local $sCommand = StringFormat('"%s" "%s"', $sFFExe, $sXPI) EndIf If StringLeft($sPath_folder, 8) = "Profiles" Then If FileExists($sIni_Path & $sPath_folder & "\extensions\mozrepl@hyperstruct.net") Then Return 1 Else If $bInstall Then Return Run($sCommand) Return 0 EndIf Else If FileExists($sPath_folder & "\extensions\mozrepl@hyperstruct.net") Then Return 1 Else If $bInstall Then Return Run($sCommand) Return 0 EndIf EndIf EndFunc ;==>_FF_MozRepl_Detect ;=============================================================================== Func _FF_ResetTitle() Return _FFCmd(".title=FFau3.WCD.getElementsByTagName('title')[0].textContent") EndFunc ;==>_FF_ResetTitle ;=============================================================================== ; Returns with an array the titles of all open tabs Func _FF_TabGetAllTitles() Return StringSplit(_FFCmd("FFau3.tmp='';for(i=0;i<gBrowser.tabContainer.childNodes.length-1;i++){FFau3.tmp+=gBrowser.getBrowserAtIndex(i).contentDocument.title+'|'}FFau3.tmp+gBrowser.getBrowserAtIndex(i++).contentDocument.title;"), "|") EndFunc ;==>_FF_TabGetAllTitles ;=============================================================================== ; Returns with an array the URLs of all open tabs Func _FF_TabGetAllURLs() Return StringSplit(_FFCmd("FFau3.tmp='';for(i=0;i<gBrowser.tabContainer.childNodes.length-1;i++){FFau3.tmp+=gBrowser.getBrowserAtIndex(i).contentDocument.location.href+'|'}FFau3.tmp+gBrowser.getBrowserAtIndex(i++).contentDocument.location.href;"), "|") EndFunc ;==>_FF_TabGetAllURLs ;=============================================================================== ; Reloads all open tabs Func _FF_TabReloadAll() Return _FFCmd("for(i=0;i<gBrowser.tabContainer.childNodes.length;i++){gBrowser.getBrowserAtIndex(i).reload()}") EndFunc ;==>_FF_TabGetAllURLs ; #FUNCTION# =================================================================== ; Name ..........: _FFDispatchKeyEvent ; Description ...: Simulates a key-event on an element. ; Beschreibung ..: Simuliert ein Tastatur-Ereignis an einem Element. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFDisPatchKeyEvent($sObject, $iKeyCode[, $sEventType = "keydown"]) ; Parameter(s): .: $sElement - Element where the keyevent is fired ; $iKeyCode - ASCII-KeyCode (decimal) ; $sEventType - Optional: (Default = "keydown") : ; | keydown ; | keypress ; | keyup ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Sep 25 11:30:47 CEST 2009 @438 /Internet Time/ ; Link ..........: http://www.w3.org/TR/DOM-Level-2-Events/events.html ; Related .......: _FFDispatchEvent ; Example .......: Yes ; ============================================================================== Func _FFDispatchKeyEvent($sElement, $iKeyCode, $sEventType = "keypress") Return _FFDispatchEvent($sElement, $sEventType, $iKeyCode = 13) EndFunc ;==>_FFDispatchKeyEvent ; #FUNCTION# =================================================================== ; Name ..........: _FFFormGetLength ; Description ...: Length of the forms ; Beschreibung ..: Gibt die Anzahl der Formulare zurück. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFFormGetLength() ; Parameter(s): .: ; Return Value ..: Success - >0 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 23:15:23 CET 2009 @969 /Internet Time/ ; Link ..........: ; Related .......: _FFGetLength ; Example .......: Yes ; ============================================================================== Func _FFFormGetLength() Return _FFGetLength("forms") EndFunc ;==>_FFFormGetLength ; #FUNCTION# =================================================================== ; Name ..........: _FFGetValueById ; Description ...: Gets an value of an element by ID ; Beschreibung ..: Liefert ein Value anhand der Element-Id ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetValueById($sID[, $iFilter = 0]) ; Parameter(s): .: $sID - ID of the element ; $iFilter - Optional: (Default = 0) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - Value ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 09 15:16:22 CEST 2009 @594 /Internet Time/ ; Link ..........: ; Related .......: _FFGetValue, _FFGetValueByName, _FFSetValueById, _FFSetValueByName, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFGetValueById($sID, $iFilter = 0) _FFGetValue($sID, "id", 0, $iFilter) EndFunc ;==>_FFGetValueById ; #FUNCTION# =================================================================== ; Name ..........: _FFGetValueByName ; Description ...: Gets a value of an element by name. ; Beschreibung ..: Liefert ein Value anhand des Element-Namens ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFGetValueByName($sName[, $iIndex = 0[, $iFilter = 0]]) ; Parameter(s): .: $sName - Name of the element ; $iIndex - Optional: (Default = 0) : Index of the element (0-n) ; $iFilter - Optional: (Default = 0) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - Value ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 09 15:14:25 CEST 2009 @593 /Internet Time/ ; Link ..........: ; Related .......: _FFGetValue, _FFGetValueById, _FFSetValueById, _FFSetValueByName, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFGetValueByName($sName, $iIndex = 0, $iFilter = 0) _FFGetValue($sName, "name", $iIndex, $iFilter) EndFunc ;==>_FFGetValueByName ; #FUNCTION# =================================================================== ; Name ..........: _FFSetValueById ; Description ...: Sets a value of an element by ID ; Beschreibung ..: Setzt einen Wert (value) anhand der Element-Id ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFSetValueById($sID[, $sValue = ""]) ; Parameter(s): .: $sID - ID of the element ; $sValue - Optional: (Default = "") : Value to set ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 09 22:48:10 CEST 2009 @908 /Internet Time/ ; Link ..........: ; Related .......: _FFSetValueByName, _FFGetValueById, _FFGetValueByName, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFSetValueById($sID, $sValue = "") _FFSetValue($sValue, $sID, "id") EndFunc ;==>_FFSetValueById ; #FUNCTION# =================================================================== ; Name ..........: _FFSetValueByName ; Description ...: Sets a value of an element by Name ; Beschreibung ..: Setzt einen Wert (value) anhand des Element-Namens. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFSetValueByName($sName[, $sValue = ""[, $iIndex = 0]]) ; Parameter(s): .: $sName - Name of the element ; $sValue - Optional: (Default = "") : Value to set ; $iIndex - Optional: (Default = 0) : Index of the element (0-n) ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Apr 09 22:58:50 CEST 2009 @915 /Internet Time/ ; Link ..........: ; Related .......: _FFSetValueById, _FFGetValueById, _FFGetValueByName, _FFXPath ; Example .......: Yes ; ============================================================================== Func _FFSetValueByName($sName, $sValue = "", $iIndex = 0) _FFSetValue($sValue, $sName, "name", $iIndex) EndFunc ;==>_FFSetValueByName ; #FUNCTION# =================================================================== ; Name ..........: _FFTabCloseAll ; Description ...: Closes all Tabs except the selected ; Beschreibung ..: Schließt alle Tabs, außer dem Aktiven. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabCloseAll() ; Parameter(s): .: ; Return Value ..: Success - 1 ; Failure - 0 ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:43:12 CET 2009 @946 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......:_FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabExists, _FFTabGetLength, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabCloseAll() Return _FFTabClose("all", "key") EndFunc ;==>_FFTabCloseAll ; #FUNCTION# =================================================================== ; Name ..........: _FFTabGetLength ; Description ...: Length of the tabs ; Beschreibung ..: Liefert die Anzahl aller vorhandener Tabs. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTabGetLength() ; Parameter(s): .: ; Return Value ..: Success - Tab index 0-n ; Failure - -1 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Mon Mar 23 22:39:15 CET 2009 @943 /Internet Time/ ; Link ..........: https://developer.mozilla.org/en/XUL/tabs ; Related .......: _FFTabAdd, _FFTabDuplicate, _FFTabClose, _FFTabCloseAll, _FFTabExists, _FFTabSetSelected, _FFTabGetSelected ; Example .......: Yes ; ============================================================================== Func _FFTabGetLength() Return _FFGetLength("tabs") EndFunc ;==>_FFTabGetLength ; #FUNCTION# =================================================================== ; Name ..........: _FFTableGetCell ; Description ...: Returns the content of a table cell. ; Beschreibung ..: Liefert den Inhalt einer Tabellenzelle. ; AutoIt Version : V3.3.0.0 ; Syntax ........: _FFTableGetCell($vTable, $iColumn, $iRow[, $sMode = "index"[, $sReturnMode = "text"[, $iFilter = 1]]]) ; Parameter(s): .: $vTable - index (0-n), name or id ; $iColumn - Column (0-n) ; $iRow - Row (0-n) ; $sMode - Optional: (Default = "index") : ; | index (0-n) ; | name ; | id ; $sReturnMode - Optional: (Default = "text") : ; | text ; | html ; $iFilter - Optional: (Default = 1) : you can add them: ; | 0 = No filter ; | 1 = Remove all non ASCII ; | 2 = Remove all double withespaces ; | 4 = Remove all double linefeeds ; | 8 = Remove all HTML-tags ; | 16 = simple html-tag / entities convertor ; Return Value ..: Success - Text or HTML ; Failure - "" ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Sat Apr 11 22:56:21 CEST 2009 ; Link ..........: ; Related .......: _FFTableWriteToArray ; Example .......: Yes ; ============================================================================== Func _FFTableGetCell($vTable, $iColumn, $iRow, $sMode = "index", $sReturnMode = "text", $iFilter = 1) Local Const $sFuncName = "_FFTableGetCell" If $sMode = Default Then $sMode = "index" If $sReturnMode = Default Then $sReturnMode = "text" If Not IsInt($vTable) And $sMode = "index" Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $vTable: " & $vTable)) Return "" EndIf If Not IsInt($iColumn) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iColumn: " & $iColumn)) Return "" EndIf If Not IsInt($iRow) Then SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iRow: " & $iRow)) Return "" EndIf Switch StringLower($sReturnMode) Case "text" $sReturnMode = "textContent" Case "html" $sReturnMode = "innerHTML" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(text|html) $sReturnMode: " & $sReturnMode)) Return "" EndSwitch Local $sObject = "content.document" Switch StringLower($sMode) Case "index" $sObject &= ".getElementsByTagName('tbody')[" & $vTable & "]" Case "name" ContinueCase Case "id" $sObject &= ".getElementsByTagName('tbody')['" & $vTable & "']" Case Else SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(index|name|id) $sMode: " & $sMode)) Return "" EndSwitch $sObject &= StringFormat(".getElementsByTagName('tr')[%i].getElementsByTagName('td')[%i]", $iRow, $iColumn) Local $sRetVal = _FFCmd($sObject & "." & $sReturnMode & ";") If Not @error And $sRetVal <> "_FFCmd_Err" Then If $iFilter > 0 Then __FFFilterString($sRetVal, $iFilter) Return $sRetVal Else SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "Table/Column/Row: " & $vTable & "/" & $iColumn & "/" & $iRow)) Return "" EndIf EndFunc ;==>_FFTableGetCell
Danp2 Posted May 10, 2014 Posted May 10, 2014 Look under the Tools -> MozRepl menu and make sure that it is actually started. Also make sure that Activate on Startup is checked. Latest Webdriver UDF Release Webdriver Wiki FAQs
Arclite86 Posted May 10, 2014 Author Posted May 10, 2014 Also make sure that Activate on Startup is checked. That could be the problem I dont see the MozRepl in the msconfig--> sevice and when windows startup firefox doesnt automaticly starts up now I am trying to add the mozrepl to the systemconfig but its so hard in windows 8.1 does anybody has experince with this?
Danp2 Posted May 10, 2014 Posted May 10, 2014 Not familiar with w8.1, but Mozrepl is just a FF add-on. Go here and install it. Latest Webdriver UDF Release Webdriver Wiki FAQs
Solution Arclite86 Posted May 10, 2014 Author Solution Posted May 10, 2014 I just solved it by going too the menu-bar --> extra -->mozrepl--> activate on start up this problably has to do with the latest firefox version , because i never had to do this before But thanks Danp2 for helping me
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now