My blog has moved!
You should be automatically redirected in 5 seconds. If not, visit http://samueladesoga.wordpress.com and update your bookmarks.
Showing posts with label Javascripts. Show all posts
Showing posts with label Javascripts. Show all posts

Tuesday, 23 December 2008

Using selenium.GetEval(script)to execute Javascript

The task at hand was to navigate through the DOM of a particular webpage and check the
style.display attribute of an object or element if you prefer. There are two elements on this page that displayed either success or failure messages.(msgSuccess and msgFailed)
For perfomance reasons, if previously a successful message was displayed and subsequently the you get a failure message, what the developers of the page did was to amend the style.display attribute.

<span style="display: none;" id="msgSuccess" class="MyMsgSuccess">

The HTML code above implies the element 'msgSuccess' would not be displayed

<span style="" id="msgSuccess" class="MyMsgSuccess">

In the second case, the msg success would be displayed ....

The problem i encountered was, sometimes i would have

< span style="display: none;" id="msgSuccess" class="MyMsgSuccess" > Operation Successful </span >

If i do a selenium.GetText("msgSuccess"), i get the text returned even though the style.display is set to none. Hence the need for the Selenium.GetEval to check the value of the style.display attribute as that seem as a true test for the web page

I have done:

const string script = "document.getElementById(\"msgSuccess\").style.display";
string evalResult = selenium.GetEval(script);

The above script failed as selenium was executing the javascript in the selenium console and not on the Application under test (AUT)
and searching the internet got me doing:

const string script = "selenium.browserbot.getCurrentWindow().document.getElementById(\"msgSuccess\").style.display";
string evalResult = selenium.GetEval(script);

This way i got the javascript to be run on the Application under test ....

Thursday, 6 November 2008

Selenium and Javascript events

Have you ver been in situattion when youhave typed a value into a text box and you expect a
Javascript event to be called such as "OnBlur"

welll selenium has a method "FireEvent" which triggers the event for you, but then the trick is you have to strip the "on" and name for the event wouldbe "OnBlur"

I guess abit of example would make more sense, lol.
This is what my html look like

<input type="text" value="" onblur="JavaScript:ValidateSimpleMail(true);" size="25" name="EMAIL_1" id="EMAIL_1"/>

selenium command to type into an email box, which doesnt fire the event attached to the text box

browser.Type("EMAIL_1", "sam@sam.com");

The work around is to use selenium to fire the event after it has typed in the textbox
FireEvent(locator, eventName) which in my case is

browser.FireEvent("EMAIL_1", "blur");