Still plundering along scraping web sites, printing from web pages, etc. but ran into a snag I'm hoping someone can help me with. The pic below is shows the tab that I'd like to activate and I have the code to get me right there but can't activate the tab. While the last line of code will work on my desktop PC, I can't get it to work on my other PC's. I likely could juxtapose IE on the other PC's to make it work but I know that I'm just identifying the element wrong and if I did it correctly it should work all the time without having to mess with the IE settings.
A pic of the site with the "Location Report" tab is below
Using Selenium on a different browser I was able to determine that the tab was identified as below::
css=#ext-gen42 .x-tab-strip-text
xpath=//a[@id='ext-gen42']/em/span/span
xpath=//div[3]/div/div/div/div/div/ul/li[2]/a[2]/em/span/span
My code to get me to that point is here:
Private Sub TriggerEvent(htmlDocument As Object, htmlElementWithEvent As Object, eventType As String)
Dim theEvent As Object
htmlElementWithEvent.Focus
Set theEvent = htmlDocument.createEvent("HTMLEvents")
theEvent.initEvent eventType, True, False
htmlElementWithEvent.dispatchEvent theEvent
End Sub
Sub Oasis_Test()
LocnAddr = "1 park Ave"
LocnBoro = "Manhattan"
Dim IE As Object
Dim htmlDoc As Object
Dim Field1 As Object
Dim Field2 As Object
Dim Field3 As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://www.oasisnyc.net/map.aspx"
Do Until IE.readyState = 4: DoEvents: Loop
Application.Wait (Now + TimeSerial(0, 0, 3))
'ShowWindow IE.hWnd, SW_SHOWMAXIMIZED ' off for test purposes
Set htmlDoc = IE.document
On Error Resume Next
Set Field1 = htmlDoc.getElementById("ext-comp-1076")
On Error GoTo 0
Call TriggerEvent(htmlDoc, Field1, "compositionstart")
Field1.value = LocnAddr
Call TriggerEvent(htmlDoc, Field1, "compositionend")
Application.Wait (Now + TimeSerial(0, 0, 2))
' there's probably a better way to do this drop-down but this works
Set Field2 = htmlDoc.getElementById("ext-comp-1078")
Call TriggerEvent(htmlDoc, Field2, "compositionstart")
Field2.value = LocnBoro
Call TriggerEvent(htmlDoc, Field2, "compositionend")
Application.SendKeys "{TAB}"
Application.Wait (Now + TimeSerial(0, 0, 2))
htmlDoc.getElementById("ext-gen118").Click
Application.Wait (Now + TimeSerial(0, 0, 2))
' I don't get an error on the next line and it actually works on my desktop
' but can't get it to work anywhere else.
htmlDoc.getElementById("ext-gen42").Click
Application.Wait (Now + TimeSerial(0, 0, 2))
htmlDoc.getElementById("ext-gen44").Click
Application.Wait (Now + TimeSerial(0, 0, 2))
htmlDoc.getElementById("ext-gen46").Click
Application.Wait (Now + TimeSerial(0, 0, 2))
htmlDoc.getElementById("ext-gen42").Click '##### NG ######
End Sub
So my question is what is the correct way to identify that "ext-gen42" element so that I can click on or press it to have that tab display so that I can scrape the information off of it?. I'm sure I'll run into more "css" elements (or whatever they are) as I continue so any help would be greatly appreciated.