views:

45

answers:

2

I am trying to automate a download of some data from a web application via Powershell/Internet Explorer COM similar to this article.
This works fine for normal elements/pull-downs, but how do navigate through tables via the COM object in case I want to click/find out the links inside a table?

A: 

It looks like the standard DOM that people usually access in javascript. Try $doc.getElementsByTagName('TABLE') to get a list of tables. Use foreach or pipelines to get at the individual tables.

lmz
+1  A: 

Check this code:

$ie = New-Object -com InternetExplorer.Application
$tables = @($ie.Document.getElementsByTagName('table'))
# filter out the tables you are not interested in
$tables = filter-tables-somehow $tables
$links = $tables | 
  % { $_.getElementsByTagName('a') } |
  ? { filter-links-somehow $_ }
# and now process the links as you have been doing it so far

You need to filter out some tables that contain links that you don't want to download. The same holds for links - I suppose you want 'click' only some links.

For this kind of automation I would recommend to have a look at WatiN (or PowerWatiN). This could save you some time.

stej