[dba-VB] Web page manipulation

Mark Breen marklbreen at gmail.com
Mon Dec 13 03:48:10 CST 2010


Hello John

Another choice is to use Sillennium <http://seleniumhq.org/>

It is built for this task and will allow you to easily change your library
of routines when your website changes.

Mark




On 10 December 2010 22:33, Drew Wutka <DWUTKA at marlow.com> wrote:

> Now for a little more info for you.  Yes, you can certainly do this.
> Technically, it's not much different than if someone handed you an .mde,
> and asked you to automate tasks in the mde (so you couldn't tweak the
> source code running the program itself, but you could open the mde with
> VBA, and use the objects within it just like you'd use the objects in
> your own application.)
>
> Trick #1:  Just like with an .mde, you have to have a reference to the
> database itself, so with a browser, you need a reference to it.  You can
> either programmatically open a browser window (so you'll both create the
> object, and have a reference to it), or you can ask the user which
> browser window they want you to use (so you can grab the browser window
> through code).
>
> Here's an example of how to grab an existing browser window:
>
> Function GetExistingBrowser(strKey As String)
> Dim SWs As New SHDocVw.ShellWindows
> Dim IE As SHDocVw.InternetExplorer
> Dim mdie As InternetExplorer
> Dim Resp
> For Each IE In SWs
>    Resp = MsgBox("Do you want to select: " & vbCrLf & vbCrLf &
> IE.LocationName & vbCrLf & vbCrLf & IE.LocationURL, vbYesNo +
> vbQuestion, "Select IE")
>    If Resp = vbYes Then
>        Set mdie = Nothing
>        Set mdie = IE.Application
>        NewSormDataEntry strKey, mdie
>        Exit Function
>    End If
> Next
> End Function
>
> The 'NewSormDataEntry' function is the function I am sending the mdie
> object too (the referenced browser window).  In this function strKey is
> the primary key of a record that will be used in that NewSormDataEntry
> to submit data into a web site.
>
> Trick #2:  Just like when the development world got a wedgie when
> Microsoft 'secured' Outlook from programs just using it to send email,
> web security can be a real pain in doing something like this.  The
> security is put in place to impede (note, I didn't say prevent) a hacker
> from doing nasty stuff to the site.  So the 'impeding' garbage designed
> to trip up hackers can get in the way of a legitimate developer trying
> to create a helpful tool.  So before you COMMIT to being able to make
> the tool, you'll need to look at the site itself, to see what all will
> get in your way.
>
> Trick #3:  There are two ways to 'find' the objects you will need your
> code to work with.  The first is to just look at the HTML of the page(s)
> you are going to manipulate.  This is where some of those 'impediments'
> come into play.  Some sites prevent you from right clicking on a page
> and selecting 'View Source'.  Ironically, this is just removing a
> 'shortcut' way to view the HTML source behind a page.  It doesn't
> actually HIDE the source, because your browser is viewing the source, it
> has too, otherwise it will have nothing to display.  So there are
> multiple ways to 'download' the HTML you can view yourself.  Create your
> own browser, and dump the HTML to a file. You can also use API calls to
> just directly download the HTML, without a browser.  If the page is
> derived from internal (on the website server) variables, you'll need to
> use your own browser to get there and download the source.  The second
> way to 'find' the objects you need to deal with are with the object
> browser. Running your code in debug mode, you'll be able to see the
> browser object, and all of it's child elements.
>
> Trick #4:  Events and properties.  Setting the value of a textbox, or
> clicking a button, just requires that you know what the events and
> properties of those objects are.  I use the MSDN that came with the
> developer edition of Office 2000.  It's got a nice HTML guide with
> common HTML form elements, their properties, methods, and events.  But
> all that information is also plastered all over the web.
>
> Trick #5:  When a page loads, the browser object is there, but you may
> not be able to capture 'download complete' events.  What I have done in
> these cases, where my code puts in data on a page, clicks a button to go
> to the next page, I put my code in a loop, that sits and waits for an
> object from the next page to exist.
>
> Of course, if there are applets, or flash media elements, required for
> interaction... can't help ya there, haven't tackled one of those.
>
> Drew
>
> -----Original Message-----
> From: dba-vb-bounces at databaseadvisors.com
> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby
> Sent: Friday, December 10, 2010 3:30 PM
> To: VBA
> Subject: [dba-VB] Web page manipulation
>
> My client has to go through a process where he clicks about 20 - 30
> things to manage to get a file
> downloaded.  It sounded totally convoluted but the question is (and I
> have asked this before without
> a usable response) can I programmatically manipulate web pages to cause
> specific pages to open,
> click buttons, input data into controls etc.
>
> --
> John W. Colby
> www.ColbyConsulting.com
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
>
> The information contained in this transmission is intended only for the
> person or entity
> to which it is addressed and may contain II-VI Proprietary and/or II-VI
> Business
> Sensitive material. If you are not the intended recipient, please contact
> the sender
> immediately and destroy the material in its entirety, whether electronic or
> hard copy.
> You are notified that any review, retransmission, copying, disclosure,
> dissemination,
> or other use of, or taking of any action in reliance upon this information
> by persons
> or entities other than the intended recipient is prohibited.
>
>
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
>
>



More information about the dba-VB mailing list