marta 0.37396 → 0.41245

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12ec2a504a8d87171ea120513b7ec80d6db61961
4
- data.tar.gz: c24afb174f328be3221a39274a1cc9ad22a925b7
3
+ metadata.gz: f8beee45c271c89a12e79a698eb47a90950a2ad0
4
+ data.tar.gz: be20dd4c88cfdce89c87b828b2230d0c30db9e19
5
5
  SHA512:
6
- metadata.gz: 3d85be37f4bc4ee4911e51f8e26860951975dbbf28ae9dbc063f35a012523056b5a97fe017de0a48b66faac2049cdab43e95a176f0ffca224b5977fa06e9ceaf
7
- data.tar.gz: 6c5de76ed3e580f77e132d4c4eea9dd6e943a57092a87d46eec4642807e5e454b1e211bfcc516e8176c6ee266ee399545eee60d34f4dfd6726ba30fd15a28477
6
+ metadata.gz: fd005959f827838be1424b933cfedac56f15523cf785bf8be86e5654e6565041e878bd5b81ac7e26c01efb75648339469b88c485b3c8d129052822ce7e8b4af4
7
+ data.tar.gz: 155842d7fb91435f72b2bfeca5bc13ffa21901c4832157197d1aae522249f00f7aaf45458df1e04408ae17bd52c386c0791090d82ba5e24b1857f922cd90a266
data/README.md CHANGED
@@ -4,6 +4,10 @@ Marta was planned as an element locating tool for Watir tests. But now Marta is
4
4
 
5
5
  Also Marta is providing a little more stability when locating elements on the page.
6
6
 
7
+ ## Refactoring notification.
8
+
9
+ Version 0.41245 (that one) is the version with new structure of data storing. Marta will try to convert old pajeobject json files to the new format automatically. But manual redefining is the safest way.
10
+
7
11
  ## Installation
8
12
 
9
13
  Add this line to your application's Gemfile:
@@ -64,28 +68,45 @@ your_page.your_element.click
64
68
  ## FAQ
65
69
  **Q: What if some attributes of elements will be changed?**
66
70
 
67
- *A: First of all at the defining stage you can exclude dynamic attributes. Also Marta has special Black Magic algorithm that will try to find the most similar element anyway.*
68
-
69
- *NOTE: Exclude attributes with empty values as well. In later versions Marta will filter them out automatically.*
71
+ *A: Marta has her special Black Magic algorithm that will try to find the most similar element anyway.*
70
72
 
71
73
  **Q: What if I can locate element only by dynamic attributes like account_id?**
72
74
 
73
- *A: For example you want to find an element with the dynamic attribute "itemprop"*
75
+ *A: For example you've got an element:*
76
+
77
+ ```html
78
+ <span account_id="(notimportantpart)_2132">Account</span>
79
+ ```
80
+
81
+ *where 2132 is a dynamic value that is not known at the begining of the test.*
74
82
 
75
- *First at the stage of page defining create a class variable itemprop = "anything".*
83
+ *First at the stage of page defining create a class variable account_id = "anything".*
76
84
 
77
- ![Dynamic attributes - 1](readme_files/itemprop.png)
85
+ ![Dynamic attributes - 1](readme_files/account_id.png)
78
86
 
79
87
  *After that you can dynamically change it in your code like*
80
88
  ```ruby
81
- your_page.itemprop # will be "anything" by default
82
- your_page.itemprop = "about"
89
+ your_page.account_id # will be "anything" by default
90
+ your_page.account_id = "2132"
83
91
  ```
84
- *And when defining an element you can use it in value field of itemprop like #{@itemprop}.*
92
+ *At the stage of element defining you should be sure that your_page.account_id has your right value, just the same as in account_id attribute of your span. Just click on your span and Marta will remember that attribute automatically as an attribute with a dynamic part. Next time it will automatically change dynamic part of an attribute to your_page.account_id value.*
85
93
 
86
- ![Dynamic attributes - 2](readme_files/itemprop2.png)
94
+ *If there are two dynamic attributes that are containing the same dynamic part. Like:*
95
+ ```html
96
+ <span account_id="(notimportantpart)_2132" value="2132">Account</span>
97
+ ```
98
+ *You can use variable with name containing both. Like:*
99
+ ```ruby
100
+ your_page.account_id_and_value #=> whatever was set by default at the page defining stage.
101
+ your_page.account_id_and_value = "2132"
102
+ ```
103
+ *Marta will understand it.*
87
104
 
88
- *See couple examples in example_project (Ruby checkbox, item1 and 2 radio buttons)*
105
+ *You can see an example of it in exapmle_project. Page variable id_and_value_for_radio is related to attributes id and value of the radio buttons*
106
+
107
+ **Q: And what about dynamic text?**
108
+
109
+ *The same story. Your page variable name should include 'text'*
89
110
 
90
111
  **Q: I want to turn learning mode on\off in the code. How?**
91
112
 
@@ -142,6 +163,8 @@ TestPage.open_page("smthing.com") # Will navigate you to http://smthing.com
142
163
  *Predefined url way:*
143
164
 
144
165
  *At the step of the page defining set variable url = smthing.com*
166
+ ![Url way - 1](readme_files/urlway.png)
167
+ *And in the code:*
145
168
  ```ruby
146
169
  dance_with
147
170
  test_page = TestPage.open_page # Will navigate you to http://smthing.com
@@ -151,6 +174,8 @@ test_page.url #=> "smthing.com"
151
174
  *The most flexible way:*
152
175
 
153
176
  *At the step of the page defining you set path = testpath*
177
+ ![Path way - 1](readme_files/pathway.png)
178
+ *And in the code:*
154
179
  ```ruby
155
180
  dance_with base_url: "smthing.com"
156
181
  test_page = TestPage.open_page # Navigating you to http://smthing.com/testpath
@@ -177,9 +202,9 @@ test_page.method_edit("magic_button")
177
202
 
178
203
  *A: You can set tolerancy parameter. Larger = longer*
179
204
  ```ruby
180
- dance_with tolerancy: 1024# is the default value
205
+ dance_with tolerancy: 100000# is the default value
181
206
  ```
182
- *That logic will be changed to more understandable soon. I hope.*
207
+ *The amount = 100000 means that Marta will look for element 3 times (with different settings) trying up to 100000 xpaths each iteration. She will generate all possible combinations at first. When she's getting closer to the limit she's starting to try more random xpaths*
183
208
 
184
209
  **Q: Marta is trying to find the lost element after pretty long time. Why?**
185
210
 
@@ -213,9 +238,7 @@ engine.element(id: 'will_be_located_without_Marta')
213
238
 
214
239
  **Q: How can I find an invisible element? Or hardly clickable element with 1px size?**
215
240
 
216
- *A: At the stage of element defining you can see a button "Find by HTML". That button will open html code of your page in a special blue form. Find the html code of your element and click on it.*
217
-
218
- ![HTML](readme_files/html.png)
241
+ *A: At the stage of element defining you can open devtools. Just find the element you want to find and click Import from Devtools button*
219
242
 
220
243
  **Q: How can I find not just an element but a Watir::Radio for example?**
221
244
 
@@ -292,16 +315,16 @@ g_page.search "I am in love with selenium."
292
315
 
293
316
  **Q: What about an example?**
294
317
 
295
- *A: It is placed in example_project folder. All elements are defined already (except one that is not in use by default). For a tour do*
318
+ *A: It is placed in example_project folder. All elements are defined already. For a tour do*
296
319
 
297
320
  $ cd example_project
298
321
  $ ./tests_with_learning.sh
299
322
 
300
- *Take a look at elements defining (especially when variable #{r_selection} is used). Try to redefine elements. Also take a look at the ruby code. There are some comments.*
323
+ *Take a look at elements defining. Try to redefine elements. Also take a look at the ruby code. There are some comments.*
301
324
 
302
325
  **Q: What else?**
303
326
 
304
- *A: Nothing. Marta is under development. Her version is 0.37396. All the necessary features are working already but there are tons of things that should be done. And I am not a professional developer.*
327
+ *A: Nothing. Marta is under development. Her version is 0.41245. All the necessary features are working already but there are tons of things that should be done. And I am not a professional developer.*
305
328
 
306
329
  ## Internal Design
307
330
 
@@ -8,7 +8,8 @@ class MyTestPage < MartaTestPage
8
8
  some_field.set some
9
9
  # We will choose radio dynamically. Note:
10
10
  # the variable @r_select is defined at the page creation stage
11
- @r_select = r_selection
11
+ @id_and_value_for_radio = r_selection
12
+ warn "r_select = #{@id_and_value_for_radio}"
12
13
  dynamic_radio.set
13
14
  dropbox.select selection
14
15
  dummy_checkbox.set if confirmed
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <body>
3
+ <a href="https://github.com/sseleznevqa/marta">GITHUB link</a>
4
+ </body>
5
+ </html>
@@ -2,7 +2,7 @@
2
2
  <title>Example page</title>
3
3
  <body>
4
4
  <h1 id='Title'>Test page</h1>
5
- <iframe src="/welcome" width=300 height=300></iframe>
5
+ <iframe src="iframe.html" width=300 height=300></iframe>
6
6
  <form>
7
7
  <input type='text' class='some' placeholder='utka'>
8
8
  <select custom='custom'>
@@ -1,182 +1,765 @@
1
1
  {
2
- "vars": {
3
- "path": "test",
4
- "r_select": "notdefined",
5
- "url": ""
6
- },
7
2
  "meths": {
8
3
  "numbers": {
9
4
  "options": {
10
- "collection": true,
11
- "self": "LI",
12
- "not_self": null,
13
- "pappy": "UL",
14
- "not_pappy": null,
15
- "granny": "FORM",
16
- "not_granny": null
17
- },
18
- "not_self": null,
19
- "not_pappy": null,
20
- "not_granny": null,
21
- "self": {
22
- "class": [
23
- "collection"
24
- ]
25
- },
26
- "pappy": {
27
- },
28
- "granny": {
5
+ "collection": true
6
+ },
7
+ "positive": {
8
+ "self": {
9
+ "text": [
10
+
11
+ ],
12
+ "tag": [
13
+ "LI"
14
+ ],
15
+ "attributes": {
16
+ "class": [
17
+ "collection"
18
+ ]
19
+ }
20
+ },
21
+ "pappy": {
22
+ "text": [
23
+
24
+ ],
25
+ "tag": [
26
+ "UL"
27
+ ],
28
+ "attributes": {
29
+ }
30
+ },
31
+ "granny": {
32
+ "text": [
33
+
34
+ ],
35
+ "tag": [
36
+ "FORM"
37
+ ],
38
+ "attributes": {
39
+ }
40
+ }
41
+ },
42
+ "negative": {
43
+ "self": {
44
+ "text": [
45
+
46
+ ],
47
+ "tag": [
48
+
49
+ ],
50
+ "attributes": {
51
+ }
52
+ },
53
+ "pappy": {
54
+ "text": [
55
+
56
+ ],
57
+ "tag": [
58
+
59
+ ],
60
+ "attributes": {
61
+ }
62
+ },
63
+ "granny": {
64
+ "text": [
65
+
66
+ ],
67
+ "tag": [
68
+
69
+ ],
70
+ "attributes": {
71
+ }
72
+ }
29
73
  }
30
74
  },
31
75
  "some_field": {
32
- "granny": {
33
- },
34
76
  "options": {
35
- "collection": false,
36
- "granny": "BODY",
37
- "pappy": "FORM",
38
- "self": "INPUT"
39
- },
40
- "pappy": {
41
- },
42
- "self": {
43
- "class": [
44
- "some"
45
- ],
46
- "placeholder": "utka",
47
- "type": "text"
77
+ "collection": false
78
+ },
79
+ "positive": {
80
+ "self": {
81
+ "tag": [
82
+ "INPUT"
83
+ ],
84
+ "text": [
85
+
86
+ ],
87
+ "attributes": {
88
+ "class": [
89
+ "some"
90
+ ],
91
+ "placeholder": [
92
+ "utka"
93
+ ],
94
+ "type": [
95
+ "text"
96
+ ]
97
+ }
98
+ },
99
+ "pappy": {
100
+ "tag": [
101
+ "FORM"
102
+ ],
103
+ "text": [
104
+
105
+ ],
106
+ "attributes": {
107
+ }
108
+ },
109
+ "granny": {
110
+ "tag": [
111
+ "BODY"
112
+ ],
113
+ "text": [
114
+
115
+ ],
116
+ "attributes": {
117
+ }
118
+ }
119
+ },
120
+ "negative": {
121
+ "self": {
122
+ "text": [
123
+
124
+ ],
125
+ "tag": [
126
+
127
+ ],
128
+ "attributes": {
129
+ }
130
+ },
131
+ "pappy": {
132
+ "text": [
133
+
134
+ ],
135
+ "tag": [
136
+
137
+ ],
138
+ "attributes": {
139
+ }
140
+ },
141
+ "granny": {
142
+ "text": [
143
+
144
+ ],
145
+ "tag": [
146
+
147
+ ],
148
+ "attributes": {
149
+ }
150
+ }
48
151
  }
49
152
  },
50
153
  "dynamic_radio": {
51
- "granny": {
52
- },
53
154
  "options": {
54
- "collection": false,
55
- "granny": "FORM",
56
- "pappy": "DIV",
57
- "self": "INPUT"
58
- },
59
- "pappy": {
60
- },
61
- "self": {
62
- "id": "choice#{@r_select}",
63
- "name": "contact",
64
- "type": "radio",
65
- "value": "#{@r_select}"
155
+ "collection": false
156
+ },
157
+ "positive": {
158
+ "self": {
159
+ "tag": [
160
+ "INPUT"
161
+ ],
162
+ "text": [
163
+
164
+ ],
165
+ "attributes": {
166
+ "id": [
167
+ "choice1"
168
+ ],
169
+ "name": [
170
+ "contact"
171
+ ],
172
+ "type": [
173
+ "radio"
174
+ ],
175
+ "value": [
176
+ "1"
177
+ ]
178
+ }
179
+ },
180
+ "pappy": {
181
+ "tag": [
182
+ "DIV"
183
+ ],
184
+ "text": [
185
+
186
+ ],
187
+ "attributes": {
188
+ }
189
+ },
190
+ "granny": {
191
+ "tag": [
192
+ "FORM"
193
+ ],
194
+ "text": [
195
+
196
+ ],
197
+ "attributes": {
198
+ }
199
+ }
200
+ },
201
+ "negative": {
202
+ "self": {
203
+ "text": [
204
+
205
+ ],
206
+ "tag": [
207
+
208
+ ],
209
+ "attributes": {
210
+ }
211
+ },
212
+ "pappy": {
213
+ "text": [
214
+
215
+ ],
216
+ "tag": [
217
+
218
+ ],
219
+ "attributes": {
220
+ }
221
+ },
222
+ "granny": {
223
+ "text": [
224
+
225
+ ],
226
+ "tag": [
227
+
228
+ ],
229
+ "attributes": {
230
+ }
231
+ }
66
232
  }
67
233
  },
68
234
  "dropbox": {
69
- "granny": {
70
- },
71
235
  "options": {
72
- "collection": false,
73
- "granny": "BODY",
74
- "pappy": "FORM",
75
- "self": "SELECT"
236
+ "collection": false
76
237
  },
77
- "pappy": {
238
+ "positive": {
239
+ "self": {
240
+ "tag": [
241
+ "SELECT"
242
+ ],
243
+ "text": [
244
+
245
+ ],
246
+ "attributes": {
247
+ "custom": [
248
+ "custom"
249
+ ]
250
+ }
251
+ },
252
+ "pappy": {
253
+ "tag": [
254
+ "FORM"
255
+ ],
256
+ "text": [
257
+
258
+ ],
259
+ "attributes": {
260
+ }
261
+ },
262
+ "granny": {
263
+ "tag": [
264
+ "BODY"
265
+ ],
266
+ "text": [
267
+
268
+ ],
269
+ "attributes": {
270
+ }
271
+ }
78
272
  },
79
- "self": {
80
- "custom": "custom",
81
- "retrieved_by_marta_text": "\n "
273
+ "negative": {
274
+ "self": {
275
+ "text": [
276
+
277
+ ],
278
+ "tag": [
279
+
280
+ ],
281
+ "attributes": {
282
+ }
283
+ },
284
+ "pappy": {
285
+ "text": [
286
+
287
+ ],
288
+ "tag": [
289
+
290
+ ],
291
+ "attributes": {
292
+ }
293
+ },
294
+ "granny": {
295
+ "text": [
296
+
297
+ ],
298
+ "tag": [
299
+
300
+ ],
301
+ "attributes": {
302
+ }
303
+ }
82
304
  }
83
305
  },
84
306
  "dummy_checkbox": {
85
- "granny": {
86
- },
87
307
  "options": {
88
- "collection": false,
89
- "granny": "FORM",
90
- "pappy": "DIV",
91
- "self": "INPUT"
308
+ "collection": false
92
309
  },
93
- "pappy": {
310
+ "positive": {
311
+ "self": {
312
+ "tag": [
313
+ "INPUT"
314
+ ],
315
+ "text": [
316
+
317
+ ],
318
+ "attributes": {
319
+ "name": [
320
+ "checkbox"
321
+ ],
322
+ "type": [
323
+ "checkbox"
324
+ ],
325
+ "value": [
326
+ "checkbox"
327
+ ]
328
+ }
329
+ },
330
+ "pappy": {
331
+ "tag": [
332
+ "DIV"
333
+ ],
334
+ "text": [
335
+
336
+ ],
337
+ "attributes": {
338
+ }
339
+ },
340
+ "granny": {
341
+ "tag": [
342
+ "FORM"
343
+ ],
344
+ "text": [
345
+
346
+ ],
347
+ "attributes": {
348
+ }
349
+ }
94
350
  },
95
- "self": {
96
- "name": "checkbox",
97
- "type": "checkbox",
98
- "value": "checkbox"
351
+ "negative": {
352
+ "self": {
353
+ "text": [
354
+
355
+ ],
356
+ "tag": [
357
+
358
+ ],
359
+ "attributes": {
360
+ }
361
+ },
362
+ "pappy": {
363
+ "text": [
364
+
365
+ ],
366
+ "tag": [
367
+
368
+ ],
369
+ "attributes": {
370
+ }
371
+ },
372
+ "granny": {
373
+ "text": [
374
+
375
+ ],
376
+ "tag": [
377
+
378
+ ],
379
+ "attributes": {
380
+ }
381
+ }
99
382
  }
100
383
  },
101
384
  "confirmation_message": {
102
- "granny": {
103
- },
104
385
  "options": {
105
- "collection": false,
106
- "granny": "HTML",
107
- "pappy": "BODY",
108
- "self": "H1"
386
+ "collection": false
109
387
  },
110
- "pappy": {
388
+ "positive": {
389
+ "self": {
390
+ "text": [
391
+ "1st button was clicked"
392
+ ],
393
+ "tag": [
394
+ "H1"
395
+ ],
396
+ "attributes": {
397
+ "id": [
398
+ "Title"
399
+ ]
400
+ }
401
+ },
402
+ "pappy": {
403
+ "text": [
404
+
405
+ ],
406
+ "tag": [
407
+ "BODY"
408
+ ],
409
+ "attributes": {
410
+ }
411
+ },
412
+ "granny": {
413
+ "text": [
414
+
415
+ ],
416
+ "tag": [
417
+ "HTML"
418
+ ],
419
+ "attributes": {
420
+ }
421
+ }
111
422
  },
112
- "self": {
113
- "id": "Title",
114
- "retrieved_by_marta_text": "1st button was clicked"
423
+ "negative": {
424
+ "self": {
425
+ "text": [
426
+
427
+ ],
428
+ "tag": [
429
+
430
+ ],
431
+ "attributes": {
432
+ }
433
+ },
434
+ "pappy": {
435
+ "text": [
436
+
437
+ ],
438
+ "tag": [
439
+
440
+ ],
441
+ "attributes": {
442
+ }
443
+ },
444
+ "granny": {
445
+ "text": [
446
+
447
+ ],
448
+ "tag": [
449
+
450
+ ],
451
+ "attributes": {
452
+ }
453
+ }
115
454
  }
116
455
  },
117
456
  "second_button": {
118
- "granny": {
119
- },
120
457
  "options": {
121
- "collection": false,
122
- "granny": "BODY",
123
- "pappy": "FORM",
124
- "self": "BUTTON"
458
+ "collection": false
125
459
  },
126
- "pappy": {
460
+ "positive": {
461
+ "self": {
462
+ "tag": [
463
+ "BUTTON"
464
+ ],
465
+ "text": [
466
+ "Second button"
467
+ ],
468
+ "attributes": {
469
+ }
470
+ },
471
+ "pappy": {
472
+ "tag": [
473
+ "FORM"
474
+ ],
475
+ "text": [
476
+
477
+ ],
478
+ "attributes": {
479
+ }
480
+ },
481
+ "granny": {
482
+ "tag": [
483
+ "BODY"
484
+ ],
485
+ "text": [
486
+
487
+ ],
488
+ "attributes": {
489
+ }
490
+ }
127
491
  },
128
- "self": {
129
- "retrieved_by_marta_text": "Second button"
492
+ "negative": {
493
+ "self": {
494
+ "text": [
495
+
496
+ ],
497
+ "tag": [
498
+
499
+ ],
500
+ "attributes": {
501
+ }
502
+ },
503
+ "pappy": {
504
+ "text": [
505
+
506
+ ],
507
+ "tag": [
508
+
509
+ ],
510
+ "attributes": {
511
+ }
512
+ },
513
+ "granny": {
514
+ "text": [
515
+
516
+ ],
517
+ "tag": [
518
+
519
+ ],
520
+ "attributes": {
521
+ }
522
+ }
130
523
  }
131
524
  },
132
525
  "title": {
133
- "granny": {
134
- },
135
526
  "options": {
136
- "collection": false,
137
- "granny": "HTML",
138
- "pappy": "BODY",
139
- "self": "H1"
527
+ "collection": false
140
528
  },
141
- "pappy": {
529
+ "positive": {
530
+ "self": {
531
+ "text": [
532
+ "Test page"
533
+ ],
534
+ "tag": [
535
+ "H1"
536
+ ],
537
+ "attributes": {
538
+ "id": [
539
+ "Title"
540
+ ]
541
+ }
542
+ },
543
+ "pappy": {
544
+ "text": [
545
+
546
+ ],
547
+ "tag": [
548
+ "BODY"
549
+ ],
550
+ "attributes": {
551
+ }
552
+ },
553
+ "granny": {
554
+ "text": [
555
+
556
+ ],
557
+ "tag": [
558
+ "HTML"
559
+ ],
560
+ "attributes": {
561
+ }
562
+ }
142
563
  },
143
- "self": {
144
- "id": "Title",
145
- "retrieved_by_marta_text": "Test page"
564
+ "negative": {
565
+ "self": {
566
+ "text": [
567
+
568
+ ],
569
+ "tag": [
570
+
571
+ ],
572
+ "attributes": {
573
+ }
574
+ },
575
+ "pappy": {
576
+ "text": [
577
+
578
+ ],
579
+ "tag": [
580
+
581
+ ],
582
+ "attributes": {
583
+ }
584
+ },
585
+ "granny": {
586
+ "text": [
587
+
588
+ ],
589
+ "tag": [
590
+
591
+ ],
592
+ "attributes": {
593
+ }
594
+ }
146
595
  }
147
596
  },
148
597
  "first_button": {
149
- "granny": {
150
- },
151
598
  "options": {
152
- "collection": false,
153
- "granny": "BODY",
154
- "pappy": "FORM",
155
- "self": "INPUT"
599
+ "collection": false
156
600
  },
157
- "pappy": {
601
+ "positive": {
602
+ "self": {
603
+ "tag": [
604
+ "INPUT"
605
+ ],
606
+ "text": [
607
+
608
+ ],
609
+ "attributes": {
610
+ "onclick": [
611
+ "document.getElementById(\"Title\").innerHTML",
612
+ "=",
613
+ "\"1st",
614
+ "button",
615
+ "was",
616
+ "clicked\""
617
+ ],
618
+ "type": [
619
+ "button"
620
+ ],
621
+ "value": [
622
+ "First",
623
+ "button"
624
+ ]
625
+ }
626
+ },
627
+ "pappy": {
628
+ "tag": [
629
+ "FORM"
630
+ ],
631
+ "text": [
632
+
633
+ ],
634
+ "attributes": {
635
+ }
636
+ },
637
+ "granny": {
638
+ "tag": [
639
+ "BODY"
640
+ ],
641
+ "text": [
642
+
643
+ ],
644
+ "attributes": {
645
+ }
646
+ }
158
647
  },
159
- "self": {
160
- "type": "button",
161
- "value": "First button"
648
+ "negative": {
649
+ "self": {
650
+ "text": [
651
+
652
+ ],
653
+ "tag": [
654
+
655
+ ],
656
+ "attributes": {
657
+ }
658
+ },
659
+ "pappy": {
660
+ "text": [
661
+
662
+ ],
663
+ "tag": [
664
+
665
+ ],
666
+ "attributes": {
667
+ }
668
+ },
669
+ "granny": {
670
+ "text": [
671
+
672
+ ],
673
+ "tag": [
674
+
675
+ ],
676
+ "attributes": {
677
+ }
678
+ }
162
679
  }
163
680
  },
164
681
  "the_iframe": {
165
- "granny": {
166
- },
167
682
  "options": {
168
- "collection": false,
169
- "granny": "HTML",
170
- "pappy": "BODY",
171
- "self": "IFRAME"
683
+ "collection": false
172
684
  },
173
- "pappy": {
685
+ "positive": {
686
+ "self": {
687
+ "tag": [
688
+ "IFRAME"
689
+ ],
690
+ "text": [
691
+
692
+ ],
693
+ "attributes": {
694
+ "height": [
695
+ "300"
696
+ ],
697
+ "src": [
698
+ "iframe.html"
699
+ ],
700
+ "width": [
701
+ "300"
702
+ ]
703
+ }
704
+ },
705
+ "pappy": {
706
+ "tag": [
707
+ "BODY"
708
+ ],
709
+ "text": [
710
+
711
+ ],
712
+ "attributes": {
713
+ }
714
+ },
715
+ "granny": {
716
+ "tag": [
717
+ "HTML"
718
+ ],
719
+ "text": [
720
+
721
+ ],
722
+ "attributes": {
723
+ }
724
+ }
174
725
  },
175
- "self": {
176
- "height": "300",
177
- "src": "/welcome",
178
- "width": "300"
726
+ "negative": {
727
+ "self": {
728
+ "text": [
729
+
730
+ ],
731
+ "tag": [
732
+
733
+ ],
734
+ "attributes": {
735
+ }
736
+ },
737
+ "pappy": {
738
+ "text": [
739
+
740
+ ],
741
+ "tag": [
742
+
743
+ ],
744
+ "attributes": {
745
+ }
746
+ },
747
+ "granny": {
748
+ "text": [
749
+
750
+ ],
751
+ "tag": [
752
+
753
+ ],
754
+ "attributes": {
755
+ }
756
+ }
179
757
  }
180
758
  }
759
+ },
760
+ "vars": {
761
+ "id_and_value_for_radio": "notdefined",
762
+ "path": "index.html",
763
+ "url": ""
181
764
  }
182
765
  }