selenium

  1. selenium
    1. Introduction
    2. Author
    3. Repository
    4. API
      1. Session
        1. quit!
        2. capabilities
        3. set-implicit-wait-time!
      2. Javascript
        1. execute-javascript
        2. execute-javascript-async
        3. javascript-dialog-text
        4. set-javascript-dialog-text!
        5. dismiss-javascript-dialog!
        6. accept-javascript-dialog!
      3. URLs
        1. set-url!
        2. current-url
      4. Navigation
        1. navigate-forward!
        2. navigate-backward!
      5. IME: Input Method Editor
        1. ime-available-engines
        2. ime-active-engine
        3. ime-activated?
        4. ime-deactivate!
        5. ime-activate!
      6. Frames & windows
        1. focus-frame!
        2. focus-window!
        3. close-window!
        4. window-handle
        5. window-handles
      7. User input
        1. user-input-speed
        2. set-user-input-speed!
      8. Elements
        1. active-element
        2. get-element-by-id
        3. get-element-by-name
        4. get-element-by-class-name
        5. get-element-by-css-selector
        6. get-element-by-link-text
        7. get-element-by-partial-link-text
        8. get-element-by-tag-name
        9. get-element-by-xpath
        10. element-value
        11. element-tag-name
        12. element-text
        13. select-element!
        14. toggle-element!
        15. click-element!
        16. clear-element!
        17. hover-element!
        18. drag-element!
        19. element-enabled?
        20. element-selected?
        21. element-displayed?
        22. element-location
        23. element-location-in-view
        24. element-size
        25. element-css-property-value
        26. set-element-value!
        27. active-element-send-modifier!
        28. element-attribute-value
        29. same-element?
        30. get-elements-by-class-name
        31. get-elements-by-css-selector
        32. get-elements-by-id
        33. get-elements-by-name
        34. get-elements-by-link-text
        35. get-elements-by-partial-link-text
        36. get-elements-by-tag-name
        37. get-elements-by-xpath
      9. Cookies
        1. get-cookies
        2. set-cookie!
        3. get-cookies-by-name
        4. get-cookies-by-value
        5. get-cookies-by-domain
        6. get-cookies-by-path
        7. cookie-name
        8. cookie-value
        9. cookie-path
        10. cookie-domain
        11. cookie-secure?
        12. cookie-expiry
      10. Pages
        1. page-source
        2. page-title
        3. refresh-page!
      11. Screen
        1. screen-orientation
        2. screenshot
      12. Mouse actions
        1. move-mouse-cursor-to!
        2. click-mouse-button!
        3. mouse-button-down!
        4. mouse-button-up!
        5. double-click-mouse-button!
      13. Firefox webdriver
        1. with-firefox-webdriver
      14. "Remote" webdriver
        1. with-remote-webdriver
    5. License
    6. Version history
      1. Version 0.6
      2. Version 0.5
      3. Version v0.4
      4. Version 0.3
      5. Version 0.2
      6. Version 0.1

Introduction

Chicken bindings for Selenium (http://code.google.com/p/selenium)

Very early stages. Implements the JSON Wire Protocol (http://code.google.com/p/selenium/wiki/JsonWireProtocol) and the remote and Firefox webdrivers.

Currently the Firefox webdriver requires a profile directory. You can get the data I'm using for the profile at http://parenteses.org/mario/misc/profile.tar.bz2. Extract this archive and give its full path to with-firefox-webdriver (see the tests/firefox.scm file for usage example).

Warning: since these bindings are in very early development stage, the API is subject to change.

Author

Mario Domenech Goulart

Repository

https://github.com/mario-goulart/selenium

API

Session

quit!
[procedure] (quit!)
capabilities
[procedure] (capabilities)
set-implicit-wait-time!
[procedure] (set-implicit-wait-time! time-ms)

Javascript

execute-javascript
[procedure] (execute-javascript script args)
execute-javascript-async
[procedure] (execute-javascript-async script args)
javascript-dialog-text
[procedure] (javascript-dialog-text)
set-javascript-dialog-text!
[procedure] (set-javascript-dialog-text! text)
dismiss-javascript-dialog!
[procedure] (dismiss-javascript-dialog!)
accept-javascript-dialog!
[procedure] (accept-javascript-dialog!)

URLs

set-url!
[procedure] (set-url! url)
current-url
[procedure] (current-url)
[procedure] (navigate-forward!)
[procedure] (navigate-backward!)

IME: Input Method Editor

ime-available-engines
[procedure] (ime-available-engines)
ime-active-engine
[procedure] (ime-active-engine)
ime-activated?
[procedure] (ime-activated?)
ime-deactivate!
[procedure] (ime-deactivate!)
ime-activate!
[procedure] (ime-activate!)

Frames & windows

focus-frame!
[procedure] (focus-frame! id)
focus-window!
[procedure] (focus-window! id)
close-window!
[procedure] (close-window! id)
window-handle
[procedure] (window-handle)
window-handles
[procedure] (window-handles)

User input

user-input-speed
[procedure] (user-input-speed)
set-user-input-speed!
[procedure] (set-user-input-speed! speed)

Elements

active-element
[procedure] (active-element)
get-element-by-id
[procedure] (get-element-by-id id)
get-element-by-name
[procedure] (get-element-by-name name)
get-element-by-class-name
[procedure] (get-element-by-class-name class-name)
get-element-by-css-selector
[procedure] (get-element-by-css-selector css-selector)
[procedure] (get-element-by-link-text link-text)
[procedure] (get-element-by-partial-link-text partial-link-text)
get-element-by-tag-name
[procedure] (get-element-by-tag-name tag-name)
get-element-by-xpath
[procedure] (get-element-by-xpath xpath)
element-value
[procedure] (element-value element)
element-tag-name
[procedure] (element-tag-name element)
element-text
[procedure] (element-text element)
select-element!
[procedure] (select-element! element)
toggle-element!
[procedure] (toggle-element! element)
click-element!
[procedure] (click-element! element)
clear-element!
[procedure] (clear-element! element)
hover-element!
[procedure] (hover-element! element)
drag-element!
[procedure] (drag-element! element)
element-enabled?
[procedure] (element-enabled? element)
element-selected?
[procedure] (element-selected? element)
element-displayed?
[procedure] (element-displayed? element)
element-location
[procedure] (element-location element)
element-location-in-view
[procedure] (element-location-in-view element)
element-size
[procedure] (element-size element)
element-css-property-value
[procedure] (element-css-property-value element)
set-element-value!
[procedure] (set-element-value! element value)
active-element-send-modifier!
[procedure] (active-element-send-modifier! key down?)
element-attribute-value
[procedure] (element-attribute-value element attribute)
same-element?
[procedure] (same-element? element1 element2)
get-elements-by-class-name
[procedure] (get-elements-by-class-name class-name)
get-elements-by-css-selector
[procedure] (get-elements-by-css-selector css-selector)
get-elements-by-id
[procedure] (get-elements-by-id id)
get-elements-by-name
[procedure] (get-elements-by-name name)
[procedure] (get-elements-by-link-text link-text)
[procedure] (get-elements-by-partial-link-text partial-link-text)
get-elements-by-tag-name
[procedure] (get-elements-by-tag-name tag-name)
get-elements-by-xpath
[procedure] (get-elements-by-xpath xpath)

Cookies

get-cookies
[procedure] (get-cookies)
[procedure] (set-cookie! name value #!key path domain secure? expiry)
get-cookies-by-name
[procedure] (get-cookies-by-name name/regex)
get-cookies-by-value
[procedure] (get-cookies-by-value value/regex)
get-cookies-by-domain
[procedure] (get-cookies-by-domain domain/regex)
get-cookies-by-path
[procedure] (get-cookies-by-path path/regex)
[procedure] (cookie-name cookie)
[procedure] (cookie-value cookie)
[procedure] (cookie-path cookie)
[procedure] (cookie-domain domain)
[procedure] (cookie-secure? cookie)
[procedure] (cookie-expiry cookie)

Pages

page-source
[procedure] (page-source)
page-title
[procedure] (page-title)
refresh-page!
[procedure] (refresh-page!)

Screen

screen-orientation
[procedure] (screen-orientation)
screenshot
[procedure] (screenshot)

Mouse actions

move-mouse-cursor-to!
[procedure] (move-mouse-cursor-to! #!optional x y element)
click-mouse-button!
[procedure] (click-mouse-button! #!optional button)
mouse-button-down!
[procedure] (mouse-button-down!)
mouse-button-up!
[procedure] (mouse-button-up!)
double-click-mouse-button!
[procedure] (double-click-mouse-button!)

Firefox webdriver

with-firefox-webdriver
[procedure] (with-firefox-webdriver profile-dir thunk #!key (scheme 'http) (host "127.0.0.1") (port 7055) (path "/hub") (command "firefox") (capabilities '((browserName . "firefox") (javascriptEnabled . #t) (platform . "ANY"))))

"Remote" webdriver

with-remote-webdriver
[procedure] (with-remote-webdriver jar-file thunk #!key (scheme 'http) (host "127.0.0.1") (port 4444) (path "/wd/hub") (command "java -jar") (capabilities '()))

License

BSD

Version history

Version 0.6

Category changed from web to testing

Version 0.5

Meta file fix (added category section)

Version v0.4

Fixed versions in release-info file

Version 0.3

Minor fixes: fixed version declaration in .setup. Unexported desired-capabilities, command-executor-host, command-executor-port and command-executor-path.

Version 0.2

Added release-info file

Version 0.1

Initial release