InfoQ

News

Catching up with Selenium: Testing Ajax, v0.8 Released

Posted by Floyd Marinescu on Sep 25, 2006 09:45 AM

Community
Java,
Agile,
.NET,
Ruby
Topics
Software Testing
Tags
Testing ,
Selenium ,
TDD
Selenium is an web app functional testing tool written by ThoughtWorks.  Selenium uses JavaScript and Iframes to embed a test automation engine in your browser, allowing Selenium to execute in any JavaScript-enabled browser. InfoQ spoke to Jeff Xiong, one of the Selenium core developers to find out more about the recent 0.8 release of Selenium core.    Also, in this latest InfoQ article on Selenium, the Selenium team show how to configure the tool for testing Ajax applications using the waitForXxxx Selenium commands;demonstrating how to test a simple Ajax effect - an asynchronous text update - with Selenium.

Read Testing Ajax Apps with Selenium.

On the release of version 0.8, Jeff Xiong explained each of the new features:
  • A "multiWindow" option which places the application-under-test in a  separate window, allowing testing of "frame-busting" apps. In the past Selenium didn't deal with the applications-under-test (AUT) which use frames very well, because it put the AUT in an embeded frame instead of stand-alone window. That was one of the largest problems preventing people from using Selenium. In 0.8, we provided an option to put the AUT in a stand-alone window, so that we can deal with all kinds of AUT actions that previously might have broken Selenium (e.g. change location of "window.parent" or "window.top"). This is the most important improvement in this new version.
  •  More reliable page-load detection for popup windows. There's a bug makes firefox cannot detect "children" windows' page-load status. That means with the combination of older version of Selenium and firefox, there may be some unpredicatable test failures. In this new version we provided a firefox plugin, which enhances firefox and makes the test more reliable.
  • New cookie-management actions. The past versions cannot deal with cookies. Users had to set up cookie environment in AUT by themselves to test cookie-related functionalities like "login". 0.8 provided cookie-handling actions like "createCookie", "deleteCookie" and "storeCookie", so that users can setup and teardown cookie environment in test cases.
  • Run-speed slider and "Pause" button which replace the old Run/Walk/Step radio-buttons.  In past versions we provided only 2 different speed
    options: fast "Run" and slow "Walk". In 0.8 we provided a slider to control the speed. Users can choose any speed between "very fast" and "very slow", allowing them to observe the tests in action.
Selenium is open source and maintained by ThoughtWorks. The tool was designed specifically for the acceptance testing requirements of Agile teams.
very cool feature by Alex Popescu Posted Sep 25, 2006 4:41 PM
Re: very cool feature by Stefan Tilkov Posted Sep 28, 2006 3:39 AM
Good Article by jessica winslet Posted Apr 1, 2009 7:31 AM
Commercial tool support by Patrick Lightbody Posted Sep 28, 2006 8:55 AM
Re: Commercial tool support by Alex Popescu Posted Sep 28, 2006 4:49 PM
AJAX functional Testing by Alex F Posted Feb 16, 2007 11:40 AM
Re: AJAX functional Testing by meenakshi ghosh Posted Sep 4, 2008 12:53 PM
  1. Back to top

    very cool feature

    Sep 25, 2006 4:41 PM by Alex Popescu

    I must confess that in the past all my AJAX pages were tested using pause(), and not only because of Selenium limitations, but also because it gave me a way to see what happens when the server timeouts (which by the way is something that must be tested). Now, regarding the new commands I am noticing in the above example that you need to provide twice the future value (the waitForX command and also to the assert). I am wondering what were the reasons behind this decission, instead of having a single command/assertion that does both jobs (wait for result and assert). ./alex -- :Architect of InfoQ.com: .w( the_mindstorm )p. Co-founder of InfoQ.com

  2. Back to top

    Re: very cool feature

    Sep 28, 2006 3:39 AM by Stefan Tilkov

    For Ruby, an alternative is to use the unit testing support built into script.aculo.us.

  3. Back to top

    Commercial tool support

    Sep 28, 2006 8:55 AM by Patrick Lightbody

    We're also very excited about this new release. The original work on the multiWindow mode actually came out of the commercial work we've been doing on HostedQA and AutoQ. The reason is that we didn't want our customers running tests in an iframe (like Selenium requires by default) as opposed to running in a normal browser window. (You can see what the reports/screenshots look like for some popular opensource projects here). If you find that you like Selenium, but wished it had some additional features (auto deployment of Java/Rails applications and databases, screenshot support, or refactoring features), then it might be worthwhile to check out our stuff. The nice thing is you can use Selenium IDE to import tests and you are free to export your tests at any time. Combine that with a free trial, and it's pretty much no-risk to check out. The next feature we're going to be pushing back in to the Selenium project is HTTPS support. Up until now, there was no way to test HTTPS applications with Selenium RC, but as of this week we've donated some code to the project that will allow this.

  4. Back to top

    Re: Commercial tool support

    Sep 28, 2006 4:49 PM by Alex Popescu

    Great job Pat! And thanks for contributing it back to the community. ./alex -- :Architect of InfoQ.com: .w( the_mindstorm )p. Co-founder of InfoQ.com

  5. Back to top

    AJAX functional Testing

    Feb 16, 2007 11:40 AM by Alex F

    You can also check SWExplorerAutomation SWEA from http://webiussoft.com. SWEA was specially designed to support AJAX (DHTML) applications. SWEA supports windows (alerts, login) and html dialogs, popup windows, mouse input simulation, file downloads, frames (cross domain) and more. SWEA can test scripts can be used in NUnit and Visual Studio unit tests.

  6. Back to top

    Re: AJAX functional Testing

    Sep 4, 2008 12:53 PM by meenakshi ghosh

    Can anyone let me know how to capture a piece of data that is created randomly in a test flow using selenium HTML scripts? I need to know what command we can use to capture that random data generated in a page. Also I need to store the data and pass as a string in some other page. Can anyone throw some lights on this one?

  7. Back to top

    Good Article

    Apr 1, 2009 7:31 AM by jessica winslet

    I am trying to see if Selenium is good for testing my applicaton or not. Am using the Selenium Ide. I want to know where the core files are installed along with meilleur site de jeux de casino the IDE? I need to change the sample files where?

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.