WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

User Samples

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Search Craigslist

 Keywords:  Search Craigslist IE 9 10 Click Method HTMLEvents InitEvent Event Button Push



;***************************************************************************
;**
;**        Search Craigslist for an item.
;**
;** Purpose: locate and display craigslist result in IE browser
;** Inputs:  starting url, query settings
;** Outputs: displays results in IE browser
;** TO DO: Optionally add code to stor the results of to a file
;**
;** Revisions: 2013.10.11  Deana Falk
;**             Initial release
;**
;**            2014.03.10 Deana Falk
;**             Fix for changes to Craigslist's HTML elements
;**             Modified code to search for inputs by name
;**
;**            2014.07.30 Deana Falk
;**             References the form by name instead of index 0.
;**             Added a UDF to wait for the page to load completely.
;**             Add a UDF to handle the button click regardless which version
;***            of IE is being used.
;***************************************************************************

;>search for:
;in:<select id="cAbb" name="catAbbreviation">
;<option value="ccc">all community<option value="eee">all event<option value="sss">all for sale / wanted<option disabled value="">--<option value="art">   art &amp; crafts
;<option value="pts">   auto parts
;<option value="bab">   baby &amp; kid stuff
;<option value="bar">   barter
;<option value="bik">   bicycles
;<option value="boa">   boats
;<option value="bks">   books
;<option value="bfs">   business
;<option value="car">   cars &amp; trucks
;<option value="emd">   cds / dvds / vhs
;<option value="clo">   clothing
;<option value="clt">   collectibles
;<option value="sys">   computers &amp; tech
;<option value="ele">   electronics
;<option value="grd">   farm &amp; garden
;<option value="zip">   free stuff
;<option value="fur">   furniture
;<option value="tag">   games &amp; toys
;<option value="gms">   garage sales
;<option value="for">   general
;<option value="hsh">   household
;<option value="wan">   items wanted
;<option value="jwl">   jewelry
;<option value="mat">   materials
;<option value="mcy" selected>   motorcycles/scooters
;<option value="msg">   musical instruments
;<option value="pho">   photo/video
;<option value="rvs">   recreational vehicles
;<option value="spo">   sporting goods
;<option value="tix">   tickets
;<option value="tls">   tools
;<option disabled value="">
;<option value="ggg">all gigs
;<option value="hhh">all housing
;<option value="jjj">all jobs
;<option value="ppp">all personals
;<option value="res">all resume
;<option value="bbb">all services offered</select>


#DefineFunction udfIEPageLoadWait( objIE )
    ; Wait for webpage to load
    While !(objIE.readyState == 'complete' || objIE.readyState == 4 )
       TimeDelay(0.1)
    EndWhile
    While !(objIE.document.readyState == 'complete' || objIE.document.readyState == 4 )
       TimeDelay(0.1)
    EndWhile
    Return 1
#EndFunction

#DefineFunction udfIEClick( objIE, objElement )
    objEvent = objIE.document.createEvent( "HTMLEvents" )
    If objEvent == "" Then
      objElement.Click()
    Else
      objEvent.initEvent("click", @TRUE, @TRUE)
      objElement.dispatchEvent(objEvent)
    EndIf
    Return 1
#EndFunction

Browser = ObjectCreate("InternetExplorer.Application")
browser.visible = @TRUE
;url  = 'http://seattle.craigslist.org/mcy/' ;Motorcycle
;url  = 'http://seattle.craigslist.org/spo/' ;Sporting goods
url = 'http://seattle.craigslist.org/sss/'
query = "WinBatch Rocks"

browser.navigate(url)

udfIEPageLoadWait(browser)

doc = browser.document

;By Number
;form = doc.forms.Item(0)

;By Name
form = doc.forms.Item('searchform')

;By Number
;form.GetElementsByTagName("INPUT").Item(x).Value = query

;By Name
count = form.GetElementsByTagName("INPUT").length
For x = 0 To count
   objInput = form.GetElementsByTagName("INPUT").Item(x)
   If objInput == 0 Then Continue
   name = objInput.Name
   id =   objInput.Id
   ;Pause(objInput.ID,name)
   If name == "query" Then form.GetElementsByTagName("INPUT").Item(x).Value = query
   If name == "minAsk" Then form.GetElementsByTagName("INPUT").Item(x).Value = "1"
   If name == "maxAsk" Then form.GetElementsByTagName("INPUT").Item(x).Value = "500"
   If name == "hasPic" Then form.GetElementsByTagName("INPUT").Item(x).checked = @TRUE
   If id == "searchbtn" Then objBtn = objInput
Next

If IsDefined(objBtn)
   ; Unfortunately .Click method doesn't work on IE 9 or newer.
   ; However this method seems to work:
   ; Reference: http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+WinBatch/OLE~COM~ADO~CDO~ADSI~LDAP/OLE~with~MSIE+IE9~Click~or~Focus~Methods~Fail.txt
   udfIEClick( browser, objBtn )
Else
    Pause('Notice','No search button found')
EndIf
While browser.readystate <> 4
   TimeDelay(0.5)
EndWhile

Exit

Article ID:   W18145
Filename:   Search Craigslist.txt
File Created: 2014:07:30:13:10:06
Last Updated: 2014:07:30:13:10:06