Selenium IDE
The Selenium IDE is an "Open source record and playback test automation for the web". Extension in the browser for recording, and there's a selenium-side-runner script to run the scripts locally against various browsers.
Library
- Selenium IDE Commands - UI Vision has some great writeups.
Learnings
Flow Control
Holy cats, Selenium has flow control now? If-else-end? Goto? Do/While? AWESOME.
Matching via RegExp
There's no current capability to check for Regular Expressions built into the app.
Case: Looking for Your receipt number is ADFSADSf1341234 and you receipt will be emailed to you shortly
.
Option 1: verifyElementPresent + xPath
1{
2 "id": "6a13fc8d-a354-4464-90d2-5a0f9ec35452",
3 "comment": "",
4 "command": "verifyElementPresent",
5 "target": "xpath=//div/div/*[contains(.,'Your receipt number is')]",
6 "targets": [],
7 "value": ""
8}, {
9 "id": "6a13fc8d-a354-4464-90d2-5a0f9ec35453",
10 "comment": "",
11 "command": "verifyElementPresent",
12 "target": "xpath=//div/div/*[contains(.,'and your receipt will be emailed to you shortly')]",
13 "targets": [],
14 "value": ""
15}
Verdict: Finds sections of pure text. No real regexp matching.
Option 2: ExecuteScript
1{
2 "id": "8d114026-f2b6-4d53-81e4-5eff16051bd6",
3 "comment": "",
4 "command": "if",
5 "target": "document.evaluate(\"//div/div/div/p[contains(., 'Your receipt number is')]\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerText.match(/Your receipt number is [a-zA-Z0-9]+ and your receipt will be emailed to you shortly/) == null",
6 "targets": [],
7 "value": ""
8}, {
9 "id": "ccddf9c7-2045-472f-abac-553d8c92bb1c",
10 "comment": "",
11 "command": "throwError",
12 "target": "Nope",
13 "targets": [],
14 "value": ""
15}, {
16 "id": "aaa85efd-8010-4e7f-8fa6-0aa52db6bf8b",
17 "comment": "",
18 "command": "end",
19 "target": "",
20 "targets": [],
21 "value": ""
22}
Verdict: This does true Regex matching, but you need to be sure the XPath will hit exactly the right node to RegExp (ie. you're not finding a node that matches a RegExp, you're finding a node then verifying it matches a regexp).