doc.txt

Selenium : Web Testing in Scheme

_Selenium : Web Testing in Scheme_
====================================

By  Noel Welsh (noel at untyped dot com)

This manual documents Schematics version 1.0
Time-stamp: <2007-05-10 11:59:31 noel>

Keywords: _selenium_, _test_, _testing_, _web testing_,



Introduction
============

Selenium (http://www.openqa.org/selenium/) is a tool for testing web applications, the core of which is a Javascript library that controls a web browser.  With the Selenium Remote Control you can control a web browser from code.  This colection provides Scheme bindings to the commands the Selenium Remote Control understands. 


Example
=======

This little example shows how to use Selenium to search on Google.

To start, you need to download the Selenium RC.  I STRONGLY
suggest you download the latest Selenium RC nightly build,
at the time of writing 0.9.1-SNAPSHOT.  You can get releases
from

  http://release.openqa.org/selenium-remote-control/

Start the Selenium RC

  java -jar selenium-server.jar

Now start up Dr/MzScheme and run the following:

  (require (planet "selenium.ss" ("untyped" "selenium.plt" 1)))

  (with-selenium
   (selenium-server "localhost" 4444 "*firefox" "http://www.google.com/")
   (open "http://www.google.com/webhp")
   (type "q" "Untyped")
   (click "btnG")
   (wait-for-page-to-load 500)
   (check string=?
          (get-title)
          "Untyped - Google Search"))

After a period of time you should see a Firefox browser come
up, visit the Google home page, and search for Untyped.


Selenium API
============

> exn:selenium?
> exn:selenium:bad-response?

Predicates that can be used to test from exceptions thrown by the Selenium library.

> (selenium-server host port browser target)
selenium-server : string string string string -> selenium-server

Create a connection to the Selenium Remote Control

> (with-selenium server expr ...)

This macro executes the given expressions in a dynamic context where the current Selenium server is server.

The remainder of the commands are as documented in the online Selenium API