symbiont 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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 |