Windows Script Host. Automate IE to click on a link.

I'm trying to automate some of my daily routine and came across "Windows Script Host".  I'm very new to wsh and I do not know its limits.  At the moment I have code that writes to a text box both user name and password then click the 'ok' to submit.  

The next step is, the page that appears after logging in I would like to trigger a click event on a hyperlink.  I've been at this for a day or two but I do not seem to be able to find a clear cut answer.
I'm going to leave a snippet of the HTML code that I want 'clicked' and also the code that I already have so far.  Please, show me how to click a hyper link using wsh.  (I would perfer javascript but vbscript is acceptable)(i'm using a windows 2003 box)
<A class="SIMainTabText" href="" onClick="onTabClick('reports',getForm(this)); return false;">Inv Sys Requests</a> 
 
ie = WScript.CreateObject("InternetExplorer.Application","ie_")
ie.Visible = true;
ie.Navigate("http://myurl.com");
for(;ie.ReadyState<4;);
ie.document.all.item("login").value = "username";
ie.document.all.item("password").value = "password";
ie.document.getElementById("Action").click();

Open in new window

ButtonDownBobbyAsked:
Who is Participating?
 
ButtonDownBobbyConnect With a Mentor Author Commented:
I got it!!!  what i was looking for was the "fireEvent" method!!!
ie = WScript.CreateObject("InternetExplorer.Application","ie_")
ie.Visible = true;
ie.Navigate("http://myurl.com");
for(;ie.ReadyState<4;);
ie.document.all.item("login").value = "username";
ie.document.all.item("password").value = "password";
ie.document.getElementById("Action").click();
do{
	WScript.Sleep(200);
}
while (ie.busy);
 
links = ie.document.getElementById("tabs").getElementsByTagName("a");
 
for(var i = 0; i < links.length; i++) {
	if (links[i].innerText == "text in the anchor") {
		links[i].fireEvent("onClick");
		break;
	}
}

Open in new window

0
 
Michel PlungjanIT ExpertCommented:
I would guess you need to wait for readystate 4 again before you click the link
0
 
ButtonDownBobbyAuthor Commented:
I already do the rest of the test code is the following but i'm not sure how i can have a 'click' triggered for the anchor item rather than the button.  I mean the code is close enough but i'm all thumbs with this right now.  
for(;ie.ReadyState<4;);
 
// search field
HtmlElement search = ie.Document.Body.All["q"];
search.SetAttribute("value", "something to search");
// button to click
HtmlElement htmlButton = ie.Document.Body.All["btnG"];
// need the DOM version of the element
object domHtmlButton = htmlButton.DomElement;
// get the method information for the click event
System.Reflection.MethodInfo mi = domHtmlButton.GetType().GetMethod("click");
// invoke the method
mi.Invoke(domHtmlButton, new object[0]);

Open in new window

0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
Michel PlungjanConnect With a Mentor IT ExpertCommented:
document.getElementsByTagName('a')
or document.links
would give you the arrays you need
0
 
ButtonDownBobbyAuthor Commented:
I'm still working on this but is there any way to call the "onClick="onTabClick('reports',getForm(this)); return false;""  function by itself?

I would like to just trigger the onClick event run the onTabClick and pass the given paramets...
0
 
Michel PlungjanIT ExpertCommented:
depends on what getForm needs from the object clicked
0
 
ButtonDownBobbyAuthor Commented:
It was a good start but, in the end there was more legwork done on my end looking for the solution.  I'll give you credit for helping with looking for the  getElementsByTagName.  Hopefully we can work together in the future if I run across any more javascript issues. :)  
0
 
Michel PlungjanIT ExpertCommented:
So in WSH It is not links[i].ciick() ??
Bizarre :)
0
 
ButtonDownBobbyAuthor Commented:
Yea, I was expecting links[i].click() to work but, fireEvent got it done...  You can check the code it runs fine and I'm running with this version until/unless I find something better.  Maybe the click method does work but i was using it wrong or had the wrong case...  ohh well the major thing is this worked out for me. :D

I'm now playing with DOMs and traversing children items now.  It's fun now that I can get past some of the rudimentary stuff.  I'm also looking into Microsoft's PowerShell as an alternate for WSH.  Having the ability to automate some of the more mundane routines is great!!!

Again thanks for the help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.