symbiont 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. data/Gemfile.lock +10 -39
  2. data/HISTORY.md +6 -0
  3. data/lib/symbiont.rb +8 -4
  4. data/lib/symbiont/enclosers.rb +4 -4
  5. data/lib/symbiont/evaluators.rb +22 -29
  6. data/lib/symbiont/generators.rb +82 -317
  7. data/lib/symbiont/platform_selenium.rb +18 -0
  8. data/lib/symbiont/platform_selenium/platform_object.rb +236 -0
  9. data/lib/symbiont/platform_selenium/web_objects/button.rb +13 -0
  10. data/lib/symbiont/platform_selenium/web_objects/checkbox.rb +21 -0
  11. data/lib/symbiont/platform_selenium/web_objects/common.rb +104 -0
  12. data/lib/symbiont/platform_selenium/web_objects/link.rb +13 -0
  13. data/lib/symbiont/platform_selenium/web_objects/radio.rb +21 -0
  14. data/lib/symbiont/platform_selenium/web_objects/select_list.rb +79 -0
  15. data/lib/symbiont/platform_selenium/web_objects/table.rb +40 -0
  16. data/lib/symbiont/platform_selenium/web_objects/table_row.rb +36 -0
  17. data/lib/symbiont/platform_selenium/web_objects/text_field.rb +14 -0
  18. data/lib/symbiont/platform_watir.rb +13 -4
  19. data/lib/symbiont/platform_watir/platform_object.rb +74 -262
  20. data/lib/symbiont/platform_watir/web_objects/checkbox.rb +21 -0
  21. data/lib/symbiont/platform_watir/web_objects/common.rb +82 -0
  22. data/lib/symbiont/platform_watir/web_objects/radio.rb +21 -0
  23. data/lib/symbiont/platform_watir/web_objects/select_list.rb +67 -0
  24. data/lib/symbiont/platform_watir/web_objects/table.rb +31 -0
  25. data/lib/symbiont/platform_watir/web_objects/table_row.rb +31 -0
  26. data/lib/symbiont/platform_watir/web_objects/text_field.rb +13 -0
  27. data/lib/symbiont/platforms.rb +18 -6
  28. data/lib/symbiont/version.rb +1 -1
  29. data/lib/symbiont/web_objects/_common.rb +53 -74
  30. data/lib/symbiont/web_objects/button.rb +23 -4
  31. data/lib/symbiont/web_objects/checkbox.rb +24 -10
  32. data/lib/symbiont/web_objects/div.rb +9 -1
  33. data/lib/symbiont/web_objects/link.rb +25 -4
  34. data/lib/symbiont/web_objects/paragraph.rb +11 -0
  35. data/lib/symbiont/web_objects/radio.rb +27 -1
  36. data/lib/symbiont/web_objects/select_list.rb +20 -56
  37. data/lib/symbiont/web_objects/span.rb +9 -1
  38. data/lib/symbiont/web_objects/table.rb +19 -22
  39. data/lib/symbiont/web_objects/table_cell.rb +17 -1
  40. data/lib/symbiont/web_objects/table_row.rb +18 -25
  41. data/lib/symbiont/web_objects/text_field.rb +27 -11
  42. data/symbiont.gemspec +3 -8
  43. metadata +29 -122
  44. data/app/Gemfile +0 -4
  45. data/app/app.rb +0 -181
  46. data/app/config/database.rb +0 -9
  47. data/app/models/plan.rb +0 -10
  48. data/app/models/product.rb +0 -10
  49. data/app/models/study.rb +0 -11
  50. data/app/models/user.rb +0 -13
  51. data/app/public/css/style.css +0 -138
  52. data/app/views/create_plan.erb +0 -21
  53. data/app/views/create_product.erb +0 -15
  54. data/app/views/create_study.erb +0 -24
  55. data/app/views/create_user.erb +0 -60
  56. data/app/views/db_plans.erb +0 -31
  57. data/app/views/db_products.erb +0 -29
  58. data/app/views/db_studies.erb +0 -33
  59. data/app/views/db_users.erb +0 -23
  60. data/app/views/entity_list.erb +0 -10
  61. data/app/views/index.erb +0 -8
  62. data/app/views/layout.erb +0 -39
  63. data/app/views/login_page.erb +0 -17
  64. data/app/views/success_1.erb +0 -2
  65. data/app/views/success_2.erb +0 -2
  66. data/app/views/test_database.erb +0 -13
  67. data/app/views/test_events.erb +0 -51
  68. data/app/views/test_login.erb +0 -53
  69. data/app/views/test_login_error.erb +0 -22
  70. data/app/views/test_login_success.erb +0 -22
  71. data/app/views/test_page.erb +0 -184
  72. data/specs/button.feature +0 -44
  73. data/specs/checkbox.feature +0 -40
  74. data/specs/data_setter.feature +0 -29
  75. data/specs/definitions/pages.rb +0 -156
  76. data/specs/div.feature +0 -11
  77. data/specs/evaluators.feature +0 -17
  78. data/specs/events.feature +0 -30
  79. data/specs/frame.feature +0 -5
  80. data/specs/link.feature +0 -42
  81. data/specs/locators.feature +0 -17
  82. data/specs/radio.feature +0 -38
  83. data/specs/select_list.feature +0 -50
  84. data/specs/simple_test.feature +0 -13
  85. data/specs/span.feature +0 -11
  86. data/specs/support/env.rb +0 -20
  87. data/specs/support/hooks.rb +0 -11
  88. data/specs/support/test_steps/action_steps_buttons.rb +0 -70
  89. data/specs/support/test_steps/action_steps_checkboxes.rb +0 -75
  90. data/specs/support/test_steps/action_steps_data_setter.rb +0 -56
  91. data/specs/support/test_steps/action_steps_divs.rb +0 -18
  92. data/specs/support/test_steps/action_steps_evaluators.rb +0 -15
  93. data/specs/support/test_steps/action_steps_events.rb +0 -77
  94. data/specs/support/test_steps/action_steps_frames.rb +0 -13
  95. data/specs/support/test_steps/action_steps_links.rb +0 -61
  96. data/specs/support/test_steps/action_steps_locators.rb +0 -44
  97. data/specs/support/test_steps/action_steps_navigate.rb +0 -25
  98. data/specs/support/test_steps/action_steps_radios.rb +0 -75
  99. data/specs/support/test_steps/action_steps_select_lists.rb +0 -106
  100. data/specs/support/test_steps/action_steps_spans.rb +0 -18
  101. data/specs/support/test_steps/action_steps_tables.rb +0 -82
  102. data/specs/support/test_steps/action_steps_text_fields.rb +0 -107
  103. data/specs/support/test_steps/action_steps_webobjects.rb +0 -31
  104. data/specs/support/test_steps/simple_test_steps.rb +0 -8
  105. data/specs/table.feature +0 -39
  106. data/specs/text_field.feature +0 -47
  107. data/specs/web_object.feature +0 -15
@@ -1,10 +0,0 @@
1
- <section id="entity_list">
2
- <p>Welcome <%= params["loginName"] %>. <span id="navigate"><a href="test_database">Logout</a></span></p>
3
- <h2>Entity List</h2>
4
- <% if params["loginName"] == "administrator" %>
5
- <p><a id="users" href="db_users">Users</a></p>
6
- <% end %>
7
- <p><a id="products" href="db_products">Products</a></p>
8
- <p><a id="studies" href="db_studies">Studies</a></p>
9
- <p><a id="plans" href="db_plans">Plans</a></p>
10
- </section>
data/app/views/index.erb DELETED
@@ -1,8 +0,0 @@
1
- <p>Choose the testing area to go to:</p>
2
-
3
- <ul>
4
- <li><a id="test_page" href="test_page">Simple Object Page</a></li>
5
- <li><a id="test_events" href="test_events">Simple Events Page</a></li>
6
- <li><a id="test_database" href="test_database">Simple Database Application</a></li>
7
- <li><a id="test_login" href="test_login">Simple Login Demonstration</a></li>
8
- </ul>
data/app/views/layout.erb DELETED
@@ -1,39 +0,0 @@
1
- <!doctype html>
2
- <html dir="ltr" lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title><%= @title + ' | Test Application' %></title>
6
- <meta name="HandheldFriendly" content="True">
7
- <meta name="MobileOptimized" content="320">
8
- <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1">
9
- <link href="http://localhost:4567/css/style.css" media="screen" rel="stylesheet">
10
- <!--[if lt IE 9]>
11
- <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
12
- <![endif]-->
13
- </head>
14
- <body>
15
-
16
- <header>
17
- <hgroup>
18
- <h1><a href="/">Testing Application</a></h1>
19
- <h2>Minimal Testing Application</h2>
20
- </hgroup>
21
- </header>
22
-
23
- <div id="main">
24
- <% if flash[:notice] %>
25
- <p class="notice"><%= flash[:notice] %></p>
26
- <% end %>
27
- <% if flash[:error] %>
28
- <p class="error"><%= flash[:error] %>
29
- <% end %>
30
- <%= yield %>
31
- </div>
32
-
33
- <footer>
34
- <p><small>An app for attaching the <a href="https://github.com/jnyman/symbiont">Symbiont</a> to.</small></p>
35
- <p><small>Part of the <a href="https://github.com/jnyman/lucid">Lucid Framework</a>.</small></p>
36
- </footer>
37
-
38
- </body>
39
- </html>
@@ -1,17 +0,0 @@
1
- <section id="login">
2
- <form id="loginFormID" class="loginFormClass" name="loginFormName" method="get" action="/entity_list" target="_top">
3
- <p><label id="lbl_server" class="Fld" for="server">Server:</label><br />
4
- <input id="serverID" name="serverName" class="Fld" size="40" type="text" value="Test"/></p>
5
-
6
- <p><label id="lbl_clientCode" class="Fld" for="clientCode">Client ID:</label><br />
7
- <input id="clientID" name="clientIDName" class="Fld" size="40" type="text"/></p>
8
-
9
- <p><label id="lbl_loginName" class="Fld" for="loginName">Login Name:</label><br />
10
- <input id="loginNameID" name="loginName" class="Fld" size="40" type="text"/></p>
11
-
12
- <p><label id="lbl_password" class="Fld" for="password">Password:</label><br />
13
- <input id="passwordID" name="passwordName" class="Fld" size="40" type="password"/></p>
14
-
15
- <p><input id="btnSubmit" name="btnSubmit" class="btn" type="submit" value="Log In"></p>
16
- </form>
17
- </section>
@@ -1,2 +0,0 @@
1
- <h1 class="title">Success</h1>
2
- <p>This is the first success page.</p>
@@ -1,2 +0,0 @@
1
- <h1 class="title">Success</h1>
2
- <p>This is the second success page.</p>
@@ -1,13 +0,0 @@
1
- <h1>Simple Database Application</h1>
2
-
3
- <iframe style="float: left;" id="loginSection" name="loginSection" src="login_page" width="500" height="300">
4
- </iframe>
5
-
6
- <table>
7
- <tr><td>&nbsp;</td>
8
- <td>
9
- <p>This is a sample login form that is within an iframe. You can sign in using any values.</p>
10
- <p>Signing in as "administrator" will give you an extra option, which is something you can test for.</p>
11
- </td>
12
- </tr>
13
- </table>
@@ -1,51 +0,0 @@
1
- <script type="text/javascript">
2
- function unhide() {
3
- document.getElementById("conditional").style.display="block";
4
- }
5
-
6
- function hide() {
7
- document.getElementById("conditional").style.display="none";
8
- }
9
-
10
- function addDiv() {
11
- var button = document.createElement("input");
12
- button.setAttribute("type", "button");
13
- button.setAttribute("value", "Newly Created Button");
14
- button.setAttribute("id", "new_button");
15
- //document.body.appendChild(button);
16
- var sectional = document.getElementById("created")
17
- sectional.appendChild(button);
18
- }
19
-
20
- function removeDiv() {
21
- var button = document.getElementById("new_button");
22
- //document.body.removeChild(button);
23
- var sectional = document.getElementById("created")
24
- sectional.removeChild(button);
25
- }
26
- </script>
27
-
28
- <section id="test_events">
29
- <h2>Simple Events Page</h2>
30
-
31
- <div class="group">
32
- <input type="button" id="conditional" value="Conditional Button"/><br /><br />
33
- <input type="button" onclick="setTimeout(function() {hide();}, 2000);" value="Hide Button"/>
34
- <input type="button" onclick="setTimeout(function() {unhide();}, 2000);" value="Reveal Button"/>
35
- </div>
36
-
37
- <div class="group">
38
- <input type="button" onclick="setTimeout(function() {addDiv();}, 2000);" value="Create Button"/>
39
- <input type="button" onclick="setTimeout(function() {removeDiv();}, 2000);" value="Remove Button"/>
40
-
41
- <div id="created">
42
- </div>
43
- </div>
44
-
45
- <h3>JavaScript Events:</h3>
46
- <div class="group">
47
- <input id="alertButton" type="button" onclick="alert('Alert Message Received')" value="Alert">
48
- <input id="confirmButton" type="button" onclick="this.value = confirm('Confirmation Message Received')" value="Confirm">
49
- <input id="promptButton" type="button" onclick='this.value = prompt("Favorite Sith Lord", "Darth Bane")' value="Prompt">
50
- </div>
51
- </section>
@@ -1,53 +0,0 @@
1
- <style>
2
- body {
3
- font-family: sans-serif;
4
- color: black;
5
- background: #DDDDDD;
6
- text-align: center;
7
- }
8
- #login {
9
- width: 30em;
10
- height: 15em;
11
- margin: 1em auto;
12
- background: white;
13
- border: 1px solid gray;
14
- padding: 10px 30px;
15
- text-align: left;
16
- }
17
- </style>
18
-
19
- <h1>Simple Login Demonstration</h1>
20
-
21
- <div id='login'>
22
- <h2>Login Page</h2>
23
- <p>Enter your user name and password and click the login button.</p>
24
- <form name='login_form' action="/test_login_success" method="post" onsubmit="return login()">
25
- <table>
26
- <tr>
27
- <td>User Name:</td>
28
- <td><input id="username" name="username_field" size="30" type="text" /></td>
29
- </tr>
30
- <tr>
31
- <td>Password:</td>
32
- <td><input id="password" name="password_field" size="30" type="password" /></td>
33
- </tr>
34
- <tr>
35
- <td>&nbsp;</td>
36
- <td><input name="login_button" type="submit" value="LOGIN" /></td>
37
- </tr>
38
- </table>
39
- </form>
40
- </div>
41
-
42
- <script type="text/javascript">
43
- function login() {
44
- if (document.login_form.username_field.value == 'demo' &&
45
- document.login_form.password_field.value == 'testing') {
46
- return true
47
- }
48
- else {
49
- window.location="test_login_error"
50
- return false
51
- }
52
- }
53
- </script>
@@ -1,22 +0,0 @@
1
- <style>
2
- body {
3
- font-family: sans-serif;
4
- color: black;
5
- background: #DDDDDD;
6
- text-align: center;
7
- }
8
- #login {
9
- width: 30em;
10
- height: 15em;
11
- margin: 1em auto;
12
- background: white;
13
- border: 1px solid gray;
14
- padding: 10px 30px;
15
- text-align: left;
16
- }
17
- </style>
18
-
19
- <div id='login'>
20
- <h1>Error Page</h1>
21
- <p>Login failed. Invalid user name and/or password.</p>
22
- </div>
@@ -1,22 +0,0 @@
1
- <style>
2
- body {
3
- font-family: sans-serif;
4
- color: black;
5
- background: #DDDDDD;
6
- text-align: center;
7
- }
8
- #login {
9
- width: 30em;
10
- height: 15em;
11
- margin: 1em auto;
12
- background: white;
13
- border: 1px solid gray;
14
- padding: 10px 30px;
15
- text-align: left;
16
- }
17
- </style>
18
-
19
- <div id='login'>
20
- <h1>Welcome Page</h1>
21
- <p>Login succeeded. Now you can <a href="test_login">logout</a>.</p>
22
- </div>
@@ -1,184 +0,0 @@
1
- <section id="test_page">
2
- <h2>Simple Object Page</h2>
3
-
4
- <p>Use this page to test out logic on common web objects.</p>
5
-
6
- <h3>Links</h3>
7
-
8
- <div class="indent">
9
- <p>Here is a link with more than one way to identify it.</p>
10
- <p><a href="success_1" id="avengersID" class="avengersClass" name="avengersName" title="Click to Assemble">Avengers Assemble</a></p>
11
-
12
- <p>Here are two links that are identical for index (implicit) but not link location (explicit).</p>
13
- <p><a href="success_1">Justice League Unite</a><br />
14
- <a href="success_2">Justice League Unite</a></p>
15
-
16
- <p>Here is a link that has locators but will be undeclared.</p>
17
- <p><a id="oath" href="success_1">&quot;in the brightest day; in the darkest night&quot;</a></p>
18
- </div>
19
-
20
- <h3>Standalone Form Elements</h3>
21
-
22
- <div class="group">
23
- <p>Below is a regular button and a disabled button. Both buttons have a series of possible locators.</p>
24
-
25
- <form action="success_1" method="get">
26
- <input id="clickmeID" class="clickmeClass" name="clickmeName" type="submit" value="Click Me">
27
- <br/>
28
- <input id="cantclickmeID" class="cantclickmeClass" name="cantclickmeName" disabled="disabled" type="submit" value="Can't Click Me">
29
- </form>
30
-
31
- <p> Below is a button that will be undeclared.</p>
32
- <form action="success_1" method="get">
33
- <input id="nostalgic" type="submit" value="All Your Base Are Belong To Us">
34
- </form>
35
- </div>
36
-
37
- <div class="group">
38
- <p>Below is a group of related field elements. Of note, one of them is a hidden field for the ISBN.</p>
39
-
40
- <label id="book_title"><strong>Book Title:</strong></label>
41
- <br/>
42
- <input id="bookTitleID" class="bookTitleClass" name="bookTitleName" size="40" type="text">
43
- <br/>
44
- <br />
45
- <label id="book_author"><strong>Book Author:</strong></label>
46
- <br />
47
- <input id="bookAuthorID" size="40" type="text">
48
- <br />
49
- <br/>
50
- <label id=book_summary"><strong>Book Summary:</strong></label>
51
- <br/>
52
- <textarea id="bookSummaryID" class="bookSummaryClass" name="bookSummaryName" rows="2" cols="80"/></textarea>
53
- <br/>
54
- <input id="bookIsbnID" class="bookIsbnClass" name="bookIsbnName" size="40" type="hidden" value="0-85131-041-9">
55
- <br/>
56
- <label class="book_reference_id"><strong>Book Internal Reference ID (Read Only):</strong></label>
57
- <br/>
58
- <input id="bookRefID" class="bookRefClass" name="bookRefName" readonly="readonly" size="40" type="text" value="1123456:AF01" style="background-color: #000000; color: yellow;">
59
- <br/>
60
- <br/>
61
- <label id="book_publisher_id"><strong>Book Internal Publisher ID (Disabled):</strong></label>
62
- <br/>
63
- <input id="bookPubID" class="bookPubClass" name="bookPubName" disabled="disabled" size="40" type="text" value="ESC:001678:FNC">
64
- </div>
65
-
66
- <div class="group">
67
- <p>This grouping contains some common web objects that are placed on forms or pages to allow selections. Note that some are disabled.</p>
68
- <p><strong>Choose Your Subatomic Particles (More Than One):</strong></p>
69
- <select id="subatomicID" multiple="multiple">
70
- <option value="electron">Electron</option>
71
- <option value="neutron">Neutron</option>
72
- <option value="quark">Quark</option>
73
- <option value="higgs">Higgs Boson</option>
74
- <option value="neutrino">Neutrino</option>
75
- <option value="graviton">Graviton</option>
76
- <option value="photon">Photon</option>
77
- </select>
78
-
79
- <p><strong>Choose Your Physics Concepts:</strong></p>
80
- <select id="physicsConceptsID" class="physicsConceptsClass" name="physicsConceptsName">
81
- <option value="option1">Quantum Entanglement</option>
82
- <option value="option2">Tachyonic Antitravel</option>
83
- <option value="option3">Bose-Einstein Condensates</option>
84
- </select>
85
-
86
- <p><strong>Your Favorite Sith Power (Disabled):</strong></p>
87
- <select id="sithPowerID" class="sithPowerClass" name="sithPowerName" disabled="disabled">
88
- <option value="option1">Force Lightning</option>
89
- <option value="option2">Sundering Assault</option>
90
- <option value="option3">Vicious Slash</option>
91
- </select>
92
-
93
- <p><strong>Choose Your Futuristic Technology:</strong></p>
94
- <input id="camoArmorID" class="camoArmorClass" name="camoArmorName" type="checkbox" value="1">Chameleoflage Armor
95
- <br/>
96
- <input id="neuralShuntID" class="neuralShuntClass" name="neuralShuntName" type="checkbox" value="2">Neural Shunts
97
- <br/>
98
- <input id="kineticHarpoonID" class="kineticHarpoonClass" name="kineticHarpoonName" type="checkbox" value="3">Kinetic Harpoons
99
- <br/>
100
- <input id="organicCircuitryID" class="organicCircuitryClass" name="organicCircuitryName" type="checkbox" value="4">Organic Circuitry
101
- <br/>
102
- <input id="eigenstateID" class="eigenstateClass" name="eigenstateName" type="checkbox" value="5" disabled="disabled">Preferential Eigenstate Selector (Disabled)
103
-
104
- <p><strong>Select Your Least Favorite Way To Vaporize:</strong>
105
- <form>
106
- <input id="mtcID" class="mtcClass" name="vaporize" type="radio" value="Multiphasic Temporal Convergence">Multiphasic Temporal Convergence
107
- <br/>
108
- <input id="upsID" class="upsClass" name="vaporize" type="radio" value="Unstable Phase Shift">Unstable Phase Shift
109
- <br/>
110
- <input id="wcbID" class="wcbClass" name="vaporize" type="radio" value="Warp Core Breach">Warp Core Breach
111
- <br/>
112
- <input id="cmeID" class="cmeClass" name="vaporize" type="radio" value="Coronal Mass Ejection" disabled="disabled">Coronal Mass Ejection (Disabled)
113
- </form>
114
- </div>
115
-
116
- <h3>Tables</h3>
117
-
118
- <div class="group">
119
- <p>This first table is very simple, using just basic HTML constructs. It has only one way identify it.</p>
120
-
121
- <table id="atomicTableID" border="1" width="400" cellpadding="3" cellspacing="3">
122
- <tr>
123
- <th>Element</th>
124
- <th>Symbol</th>
125
- <th>Atomic Number</th>
126
- </tr>
127
- <tr>
128
- <td>Carbon</td>
129
- <td>C</td>
130
- <td>6</td>
131
- </tr>
132
- <tr>
133
- <td>Molybdenum</td>
134
- <td>Mo</td>
135
- <td>42</td>
136
- </tr>
137
- <tr>
138
- <td>Radon</td>
139
- <td>Rn</td>
140
- <td>86</td>
141
- </tr>
142
- <tr>
143
- <td>Xenon</td>
144
- <td>Xe</td>
145
- <td>54</td>
146
- </tr>
147
- </table>
148
-
149
- <p>This second table uses more HTML constructs. It has multiple ways to identify it.</p>
150
-
151
- <table id="savingsTableID" name="savingsTableName" class="savingsTableClass" border='1'>
152
- <thead>
153
- <tr>
154
- <th>Month</th>
155
- <th>Savings</th>
156
- </tr>
157
- </thead>
158
- <tfoot>
159
- <tr>
160
- <td>Sum</td>
161
- <td>$180</td>
162
- </tr>
163
- </tfoot>
164
- <tbody>
165
- <tr>
166
- <td>January</td>
167
- <td id="jan_save" name="jan_save" class="cell_class">$100</td>
168
- </tr>
169
- <tr>
170
- <td>February</td>
171
- <td id="feb_save" name="feb_save" class="cell_class">$80</td>
172
- </tr>
173
- </tbody>
174
- </table>
175
- </div>
176
-
177
- <h3>Sectional Elements (Div and Span)</h3>
178
-
179
- <div class="group">
180
- <div id="divTextID" name="divTextName" class="divTextClass">This text is within a div tag.</div>
181
- <span id="spanTextID" name="spanTextName" class="spanTextClass">This text is within a span tag.</span>
182
- </div>
183
-
184
- </section>
data/specs/button.feature DELETED
@@ -1,44 +0,0 @@
1
- Feature: Ability to Support Button Web Objects
2
-
3
- Scenario: Reference a button
4
- When on the object test page
5
- Then the click me button should exist
6
- And the click me button should be visible
7
- And the click me button should be enabled
8
- And the click me button should be a button object
9
-
10
- Scenario: Get text from a button
11
- When on the object test page
12
- Then the text of the click me button should be "Click Me"
13
-
14
- Scenario: Click a button
15
- When the click me button on the simple object test page is clicked
16
- Then the first success page appears
17
-
18
- Scenario: Handling a non-existent button
19
- When on the object test page
20
- Then the fake button should not exist
21
- But the fake button should be a button object
22
-
23
- Scenario: Handling a disabled button
24
- When on the object test page
25
- Then the can't click me button should exist
26
- And the can't click me button should be visible
27
- And the text of the can't click me button should be "Can't Click Me"
28
- And the can't click me button should be a button object
29
- But the can't click me button should not be enabled
30
-
31
- Scenario Outline: Finding buttons with locators
32
- When the click me button on the object test page is clicked by "<locator>"
33
- Then the first success page appears
34
-
35
- Scenarios:
36
- | locator |
37
- | id |
38
- | name |
39
- | class |
40
- | xpath |
41
- | index |
42
- | value |
43
- | text |
44
- | css |