18 posts in this topic
Here's a cleaned up version of my code:
; Open Greatsite.com
Global $oIE = _IECreate ("http://www.greatsite.com")
; I'm logged in and on the forum page. Now to navigate categories with unknown names.
; Grab all links on page, then only dive into the ones with the text "forum_id="
; as in ?bview=forum&forum_id=108343
Global $oLinksCategoryPage = _IELinkGetCollection($oIE)
Local $iNumLinks = @extended
;Now at the thread level. Navigate into each thread and look at timestamp
Global $oLinksOfThreads = _IELinkGetCollection($oIE)
For $oLinkThread In $oLinksOfThreads
If StringInStr($oLinkThread.href,"thread_id") Then
;Need to find instance of Posted and read text after the href.
Local $sBodyText = _IEBodyReadText($oIE)
;Find first instance of the word "Posted" and check the two words to the right of it.
Local $aArrayOfBodyText = _StringExplode($sBodyText," ",0)
;_ArrayDisplay($aArrayOfBodyText, "The body text in Array form")
;Local $iIndexOfPosted = _ArraySearch($aArrayOfBodyText,"days")
For $iIndex = 0 to ubound($aArrayOfBodyText) - 1
If StringInStr(StringLower($aArrayOfBodyText[$iIndex]), "posted") Then
;The word Posted has been found. Look for "Just A moment ago", "minutes", and "minute"
Case StringLower($aArrayOfBodyText[$iIndex +1]) = "just"
;"Just a moment ago. Grab this one.
Case Stringlower($aArrayOfBodyText[$iIndex +2]) = "minute"
;"1 minute". Grab this one
Case Stringlower($aArrayOfBodyText[$iIndex +2]) = "minutes"
;"x minutes. Grab this one
;ExitLoop ;Found the first one. I'm done.
;Need to back out to Threads in Category
;Back out to Category List
The script works fine until I hit the Next to go back to the For $oLinkThread In $oLinksOfThreads. Any line that I put after that crashes with an error. It's like the For loop is going one too many iterations and there is no object in the variable.
The requested action with this object has failed.:
If StringInStr($oLinkThread.href,"thread_id") Then
If StringInStr($oLinkThread^ ERROR
Below is an example of my code that will reproduce an issue I am having, all be it an issue that sometimes occurs and sometimes does not.
#include <WinAPI.au3> #include <IE.au3> #include <MsgBoxConstants.au3> #include <Array.au3> Call ("Project") Func Project() Local $WaitTime = 10000 ; Set the time between checks in miliseconds While 1 $hwnd = WinGetHandle("[active]") If Not @error Then ; Ensure 'WinGetHandle' worked. Local $WinClassName = _WinAPI_GetClassName($hwnd) If $WinClassName = "IEFrame" Then ; If the curent window is an IE exploere instance then... Local $Object = _IEAttach($hwnd, "embedded") If not @error Then Local $url = _IEPropertyGet($Object, 'locationurl') If not @error Then Local $Split = StringSplit($url, "/") If $Split > 2 Then ; This stops an error if the array did not have enought rows e.g no url to display form row 3. If Not $Split = "" Then ; Dont bother if no url e.g blank msgbox(0, "URL is:", $Split) EndIf EndIf EndIf EndIf EndIf EndIf Sleep($WaitTime) WEnd EndFunc The issue is from IE.au3 and the error message is attached. I am able to reproduce it is I run the scrip, load an instance of IE, then navigate to a different page such as google or something.
I have looked in the code for IE.au3 and it reference to a function “__IEControlGetObjFromHWND(ByRef $hWin)” however I am not using this function so am a little unsure why or how this error is being called or what I can do to stop it?
Any advice / help would be gratefully appreciated.
Merged the SciTE 3.7.3 source into our version and several other changes and fixes to the supporting utilities.
Addition/Changes/Fixes in the current installer:
-------------------------------------------------------------------------------------------------- 24-2-2017 *** Merged the SciTE v 3.7.3 by Neil Hodgson with our own version of SciTE. (Jos) *** Updated AutoIt3Wrapper v17.224.935.0 (Jos) - 16.612.1119.1 Fixed #AutoIt3Wrapper_Run_Stop_OnError=N, avoiding to stop even when No or not specified. - 16.612.1119.2 Fixed #AutoIt3Wrapper_Run_Stop_OnError=N, avoiding to stop even when No or not specified. - 16.612.1119.3 Added warning for #AutoIt3Wrapper_UseX64 in case #pragma(out,..) is used. *** Updated Au3Stripper v17.224.935.0 (Jos) - 16.612.1119.1 Fixed issue which sometimes was stripping a global const incorrectly - 16.612.1119.2 Fixed /maxiterations parameter not recognised - 16.612.1119.3 Fixed increased the max #Au3Stripper_Ignore_Variables to 500 and for #Au3Stripper_Ignore_Funcs to 200 - 16.612.1119.4 Fixed regression introduced in 16.612.1119.1 *** Updated SciTEConfig v17.224.935.0 (Jos) - 16.306.1119.1 ... *** Updated Tidy v17.224.935.0 (Jos) - 16.612.1119.1: Fixed Sort_Func function bug when the source contains a BOM. *** Updated CodewiZard v220.127.116.11 (Cyberyeye) - Fix Icon Ressource Number for Messagebox Tab & ToolTip Tab - Check/Fix missing includes using AutoIt3Wrapper_Add_Constants=y - Added Opt("MustDeclareVars", 1) to fix undeclared variables - Replaced msgbox() magic number by constant name - Added GUISetIcon var (au3.ico) - Removed unusefull old AutoIt3Wrapper directive *** Updated Abbreviations (mLipok) - Updated au3abbrev.properties and helpfile page. --------------------------------------------------------------------------------------------------
==> ScitillaHistory page containing all SciTE-Scintilla updates.
==> Visit the SciTE4AutoIt3 Download page for the latest versions
==> Check the online documentation for an overview of all extra's you get with this installer.
I am very new to AutoIt and scripting in general and have a question about IEFormGetObjByName. The help function says:
_IEFormGetObjByName ( ByRef $oObject, $sName [, $iIndex = 0] )
But how do I find what to enter for $sName? In the example below, it says that it can be found by viewing the HTML source. So I went to the google home page, clicked Ctrl U to view the source, and cant figure out how they determined that the $sName is 'gbqf'. Can someone explain this process to me? Thanks in advance!
; Get a reference to a specific form by name. In this case, submit a query
; to the Google search engine. Note that the names of the form and form
; elements can be found by viewing the page HTML source
Local $oIE = _IECreate("http://www.google.com")
Local $oForm = _IEFormGetObjByName($oIE, "gbqf")
Local $oQuery = _IEFormElementGetObjByName($oForm, "q")
_IEFormElementSetValue($oQuery, "AutoIt IE.au3")
Hello I'm trying to translate few text using below code, I found it working previously couple of months ago but Now these days it's not working at all and I'm getting below errors when I run the script and Array display at the end of text also not able to show any translated text instead of value 0 & 1;
--> IE.au3 T3.0-2 Warning from function _IEGetObjById, $_IESTATUS_NoMatch (gt-res-data)
--> IE.au3 T3.0-2 Error from function _IEPropertyGet, $_IESTATUS_InvalidDataType
Here is code,
#include <IE.au3> #include <Array.au3> Local $tag="* # * # *" Local $oIE=_IECreate("https://translate.google.com/#auto/es") Local $oForm=_IEFormGetCollection($oIE,0) Local $oQuery=_IEGetObjByName($oForm,"text") _IEFormElementSetValue($oQuery, $tag & @CR & "Hello World" & @CR & "This is a test" & @CR & $tag) _IEFormSubmit($oForm) _IELoadWait($oIE) Local $oText=_IEGetObjById($oIE,"gt-res-data") $lines=StringSplit(_IEPropertyGet($oText,"innerText"),@CRLF,1) _IEQuit($oIE) _ArrayDelete($lines,_ArraySearch($lines,$tag,1,0,0,1,0) & "-" & $lines) _ArrayDelete($lines,"1-" & _ArraySearch($lines,$tag,1,0,0,1,1)) $lines=UBound($lines)-1 _ArrayDisplay($lines)