marta 0.26150

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +299 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/example_project/p_object/test_page.rb +31 -0
  13. data/example_project/spec/p_object/pageobjects/MartaTestPage.json +1 -0
  14. data/example_project/spec/spec_helper.rb +11 -0
  15. data/example_project/spec/watir_test_page_spec.rb +12 -0
  16. data/example_project/tests_with_learning.sh +1 -0
  17. data/example_project/tests_without_learning.sh +1 -0
  18. data/lib/marta/black_magic.rb +147 -0
  19. data/lib/marta/classes_creation.rb +21 -0
  20. data/lib/marta/data/custom-xpath.html +22 -0
  21. data/lib/marta/data/custom-xpath.js +48 -0
  22. data/lib/marta/data/element-confirm.html +18 -0
  23. data/lib/marta/data/element-confirm.js +30 -0
  24. data/lib/marta/data/element.html +23 -0
  25. data/lib/marta/data/element.js +183 -0
  26. data/lib/marta/data/for_test.html +7 -0
  27. data/lib/marta/data/for_test.js +8 -0
  28. data/lib/marta/data/page.html +24 -0
  29. data/lib/marta/data/page.js +38 -0
  30. data/lib/marta/data/style.css +209 -0
  31. data/lib/marta/dialogs.rb +124 -0
  32. data/lib/marta/injector.rb +101 -0
  33. data/lib/marta/json_2_class.rb +145 -0
  34. data/lib/marta/lightning.rb +36 -0
  35. data/lib/marta/options_and_paths.rb +140 -0
  36. data/lib/marta/public_methods.rb +51 -0
  37. data/lib/marta/read_write.rb +44 -0
  38. data/lib/marta/simple_element_finder.rb +84 -0
  39. data/lib/marta/user_values_prework.rb +26 -0
  40. data/lib/marta/version.rb +4 -0
  41. data/lib/marta/x_path.rb +170 -0
  42. data/lib/marta.rb +62 -0
  43. data/marta.gemspec +28 -0
  44. metadata +156 -0
@@ -0,0 +1,21 @@
1
+ module Marta
2
+
3
+ private
4
+
5
+ #
6
+ # That module is responsible for user dialog on itit of an unknown class
7
+ #
8
+ # The same way Marta is able to create methods she can create classes in
9
+ # a learn mode from unknown constants.
10
+ # I suggest that in common each class generated that way is a pageobject.
11
+ module ClassesCreation
12
+
13
+ private
14
+
15
+ # We are asking user about unknown classes
16
+ def page_edit(const, data=Hash.new)
17
+ data['vars'] = inject('page', const, data['vars'])
18
+ json_2_class(file_write(const.to_s, data))
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ <div id=marta_s_everything martaclass=marta_smthing>
2
+
3
+ <div id=marta_s_text martaclass=marta_smthing>
4
+ <h2 id=marta_main_title martaclass=marta_smthing></h2>
5
+ <p martaclass=marta_smthing>You are about to write your own xpath.</p>
6
+ <p martaclass=marta_smthing>Use it when element is: invisible, not present, should be found by exact xpath, marta fails to find it.</p>
7
+ <p martaclass=marta_smthing>Marta will highlight the elements targeted by your xpath. Sometimes it will even show hidden elements.</p>
8
+ <p martaclass=marta_smthing>Beware! Anything will be accepted when you will click Confirm. But maybe it will not work :)</p>
9
+ </div>
10
+ <div id=marta_s_content martaclass=marta_smthing>
11
+ <div martaclass=marta_smthing class=label id=marta_element_label>What we are looking for (one element or group?)</div>
12
+ <label martaclass=marta_smthing><input type=checkbox id=marta_array martaclass=marta_smthing>Collection</label>
13
+ <input type=button martaclass=marta_smthing id=marta_try_again onclick=marta_try_again(); value="Try again" />
14
+ <input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
15
+ </div>
16
+ <div id=xpath_field martaclass=marta_smthing>
17
+ <div martaclass=marta_smthing class=label id=marta_xpath_label>Set XPATH here and hit Enter.</div>
18
+ <span martaclass=marta_smthing>XPATH: <input onchange=marta_look(); type=text id=marta_user_xpath martaclass=marta_smthing value=>
19
+ </span>
20
+ </div>
21
+ </hr>
22
+ </div>
@@ -0,0 +1,48 @@
1
+ var marta_result = {};
2
+ var marta_confirm_mark = false;
3
+ var marta_temp_els =[];
4
+ var marta_temp_styles = [];
5
+
6
+ function marta_add_data() {
7
+ marta_confirm_mark = false;
8
+ document.getElementById("marta_main_title").innerHTML = "XPATH for " + marta_what + " = ?";
9
+ };
10
+
11
+ function marta_look() {
12
+ try {
13
+ for (var i=0; i<marta_temp_els.snapshotLength; i++) {
14
+ marta_temp_els.snapshotItem(i).setAttribute("style",marta_temp_styles[i]);
15
+ };
16
+ var t=0;
17
+ var value = document.getElementById("marta_user_xpath").value;
18
+ var result = document.evaluate(value, document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
19
+ marta_temp_els = result;
20
+
21
+ for (var i=0; i<result.snapshotLength; i++) {
22
+ var marta_smthing = ((result.snapshotItem(i).getAttribute("martaclass")=="marta_smthing")||(result.snapshotItem(i).getAttribute("martaclass")=="marta_div"));
23
+ if(!marta_smthing) {
24
+ marta_temp_styles[i] = result.snapshotItem(i).getAttribute("style");
25
+ result.snapshotItem(i).setAttribute("style","animation: marta_found 6s infinite;");
26
+ t = t+1;
27
+ };
28
+ };
29
+ document.getElementById("marta_xpath_label").innerHTML = "Found " + t + " elements";
30
+ } catch(e) {
31
+ document.getElementById("marta_xpath_label").innerHTML = "Ooops! Are you sure? Maybe Xpath is wrong?";
32
+ };
33
+ };
34
+
35
+ function marta_confirm(){
36
+ marta_result["collection"] = document.getElementById("marta_array").checked;
37
+ marta_result["xpath"] = document.getElementById("marta_user_xpath").value;
38
+ var toClear = document.querySelector("[martaclass=marta_smthing]");
39
+ toClear.parentNode.removeChild(toClear);
40
+ marta_confirm_mark = true;
41
+ };
42
+
43
+ function marta_try_again(){
44
+ var toClear = document.querySelector("[martaclass=marta_div]");
45
+ toClear.parentNode.removeChild(toClear);
46
+ marta_confirm_mark = true;
47
+ marta_result = "2";
48
+ };
@@ -0,0 +1,18 @@
1
+ <div id=marta_s_everything martaclass=marta_smthing>
2
+ <div id=marta_s_text martaclass=marta_smthing>
3
+ <h2 id=marta_main_title martaclass=marta_smthing></h2>
4
+ <p martaclass=marta_smthing>You are about to confirm element selection</p>
5
+ <p martaclass=marta_smthing>Marta highlights elements right now</p>
6
+ <p martaclass=marta_smthing>If something wrong was found - maybe it is time to talk to the developer?</p>
7
+ <p martaclass=marta_smthing>Also you could try to set your own xpath</p>
8
+ <p martaclass=marta_smthing>Or you could try to find element in a basic way once again</p>
9
+ </div>
10
+ <div id=marta_s_content martaclass=marta_smthing>
11
+ <input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
12
+ <input type=button martaclass=marta_smthing id=marta_try_again onclick=marta_try_again(); value="Try again" />
13
+ <input type=button martaclass=marta_smthing id=marta_set_by_hand onclick=marta_set_by_hand(); value="Set by hand" />
14
+ </div>
15
+ <div id=attr_fields martaclass=marta_smthing>
16
+ </div>
17
+ </hr>
18
+ </div>
@@ -0,0 +1,30 @@
1
+ var marta_result = {};
2
+ var marta_confirm_mark = false;
3
+
4
+ function marta_confirm(){
5
+ var toClear = document.querySelector("[martaclass=marta_smthing]");
6
+ toClear.parentNode.removeChild(toClear);
7
+ marta_confirm_mark = true;
8
+ marta_result = "1";
9
+ };
10
+
11
+ function marta_click_work(e){};
12
+
13
+ function marta_try_again(){
14
+ var toClear = document.querySelector("[martaclass=marta_div]");
15
+ toClear.parentNode.removeChild(toClear);
16
+ marta_confirm_mark = true;
17
+ marta_result = "2";
18
+ };
19
+
20
+ function marta_set_by_hand(){
21
+ var toClear = document.querySelector("[martaclass=marta_div]");
22
+ toClear.parentNode.removeChild(toClear);
23
+ marta_confirm_mark = true;
24
+ marta_result = "3";
25
+ };
26
+
27
+ function marta_add_data() {
28
+ marta_confirm_mark = false;
29
+ document.getElementById("marta_main_title").innerHTML = old_marta_Data + " elements found for " + marta_what;
30
+ };
@@ -0,0 +1,23 @@
1
+ <div id=marta_s_everything martaclass=marta_smthing>
2
+ <div id=marta_s_text martaclass=marta_smthing>
3
+ <h2 id=marta_main_title martaclass=marta_smthing></h2>
4
+ <p martaclass=marta_smthing>You are about to define some element</p>
5
+ <p martaclass=marta_smthing>CLICK to select element. Do not worry nothing will work</p>
6
+ <p martaclass=marta_smthing>After the click select the attributes of an element and parents</p>
7
+ <p martaclass=marta_smthing>To edit attribute value just change it and hit ENTER</p>
8
+ <p martaclass=marta_smthing>It is highly recomended to delete dynamically changing attributes</p>
9
+ <p martaclass=marta_smthing>IF you are gonna to find iframe! Elements in it are active now</p>
10
+ <p martaclass=marta_smthing>You should click at non-action element of iframe.</p>
11
+ <p martaclass=marta_smthing>Find it like a usual element and focus to it in code with dance_with(your_iframe)</p>
12
+ </div>
13
+ <div id=marta_s_content martaclass=marta_smthing>
14
+ <input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
15
+ </div>
16
+ <div id=marta_s_element_type martaclass=marta_smthing>
17
+ <div martaclass=marta_smthing class=label id=marta_element_label>What we are looking for (one element or group?)</div>
18
+ <label martaclass=marta_smthing><input type=checkbox id=marta_array martaclass=marta_smthing>Collection</label>
19
+ </div>
20
+ <div id=attr_fields martaclass=marta_smthing>
21
+ </div>
22
+ </hr>
23
+ </div>
@@ -0,0 +1,183 @@
1
+ var marta_room = 0;
2
+ var marta_result = {};
3
+ var marta_confirm_mark = false;
4
+ var marta_waits_iframe = "IFRAME";
5
+
6
+ function sleep(ms) {
7
+ ms += new Date().getTime();
8
+ while (new Date() < ms){};
9
+ };
10
+
11
+ var marta_monitor = setInterval(function(){
12
+ var elem = document.activeElement;
13
+ if(elem && elem.tagName == marta_waits_iframe){
14
+ marta_waits_iframe = "Nope, she is not";
15
+ marta_click_work(elem, true);
16
+ } else {
17
+ marta_waits_iframe = "IFRAME";
18
+ };
19
+ }, 100);
20
+
21
+ function marta_add_field(title, what, key, marker) {
22
+ marta_room++;
23
+ var objTo = document.getElementById("attr_fields");
24
+ var divtest = document.createElement("div");
25
+ var att = document.createAttribute("martaclass");
26
+ att.value = "marta_smthing";
27
+ divtest.setAttributeNode(att);
28
+ divtest.innerHTML = "<div martaclass=marta_smthing class=label id=marta_title"+marta_room+">ATTR</div><div martaclass=marta_smthing class=content id=marta_staff"+marta_room+"><span martaclass=marta_smthing>ATTR: <input martaclass=marta_smthing class=marta_s_name_field type=text disabled=disabled; id=marta_name"+marta_room+" value=></span><span martaclass=marta_smthing> = <input onchange=marta_change_field(this); martaclass=marta_smthing type=text id=marta_default_value"+marta_room+" value=></span><input martaclass=marta_smthing type=button onclick=marta_delete_line("+marta_room+") value=Delete id=delete_marta_value"+marta_room+"</div>";
29
+ objTo.appendChild(divtest);
30
+ document.getElementById("marta_title"+marta_room ).innerHTML = title;
31
+ document.getElementById("marta_name"+marta_room ).value = what;
32
+ var field = document.getElementById("marta_default_value"+marta_room);
33
+ field.value = key;
34
+ var att = document.createAttribute("marta_object_map");
35
+ att.value = title+";;"+what+";;"+marker;
36
+ field.setAttributeNode(att);
37
+ };
38
+
39
+ function marta_change_field(field){
40
+ var data = field.getAttribute("marta_object_map").split(";;");
41
+ if (data[2] == "-1"){
42
+ if (field.value == ""){
43
+ delete marta_result[data[0]][data[1]];
44
+ } else {
45
+ marta_result[data[0]][data[1]]=field.value;
46
+ };
47
+ }else if (data[2] == "taggy"){
48
+ if (field.value == ""){
49
+ marta_result["options"][data[1]] = "*";
50
+ } else {
51
+ marta_result["options"][data[1]]=field.value;
52
+ };
53
+ }else {
54
+ if (field.value == ""){
55
+ delete marta_result[data[0]][data[1]][parseInt(data[2])];
56
+ } else {
57
+ marta_result[data[0]][data[1]][parseInt(data[2])]=field.value;
58
+ };
59
+ };
60
+ };
61
+
62
+ function marta_confirm(){
63
+ if (marta_room != 0){
64
+ marta_result["options"]["collection"] = document.getElementById("marta_array").checked;
65
+ var toClear = document.querySelector("[martaclass=marta_div]");
66
+ toClear.parentNode.removeChild(toClear);
67
+ for (var what in marta_result){
68
+ for (var key in marta_result[what]){
69
+ if (marta_result[what][key] instanceof Array){
70
+ for (var i = 0; i < marta_result[what][key].length; i++) {
71
+ if (marta_result[what][key][i] == undefined) {
72
+ marta_result[what][key].splice(i, 1);
73
+ i--;
74
+ };
75
+ };
76
+ };
77
+ };
78
+ };
79
+ marta_confirm_mark = true;
80
+ return marta_result;
81
+ };
82
+ };
83
+
84
+ function marta_add_data() {
85
+ marta_result = old_marta_Data;
86
+ marta_confirm_mark = false;
87
+ document.getElementById("marta_main_title").innerHTML = "You are defining " + marta_what;
88
+ if (old_marta_Data != {}){
89
+ try {
90
+ document.getElementById("marta_array").checked = old_marta_Data["options"]["collection"];}
91
+ catch(e){};
92
+ for (var what in old_marta_Data){
93
+ if (what != "options"){
94
+ marta_add_field("TAG", what, old_marta_Data["options"][what], "taggy");
95
+ for (var key in old_marta_Data[what]){
96
+ if (/class/.test(key) == true){
97
+ for (var k = 0, length = old_marta_Data[what][key].length; k < length; k++){
98
+ marta_add_field(what, key, old_marta_Data[what][key][k], k);
99
+ };
100
+ }else
101
+ {
102
+ marta_add_field(what, key, old_marta_Data[what][key], "-1");
103
+ };
104
+ };
105
+ };
106
+ };
107
+ };
108
+ };
109
+
110
+ function marta_click_work(e, iframe=false) {
111
+ if (iframe == false){
112
+ e = e || window.event;
113
+ var target = e.target || e.srcElement;
114
+ } else {
115
+ target = e;
116
+ };
117
+ var marta_smthing = target.getAttribute("martaclass")=="marta_smthing";
118
+ if(!marta_smthing){
119
+ document.getElementById("attr_fields").innerHTML="";
120
+ marta_room = 0;
121
+ marta_result = {};
122
+ marta_result["options"] = {};
123
+ marta_after_click(target,"self");
124
+ if (!!target.parentElement){
125
+ marta_after_click(target.parentElement,"pappy");
126
+ };
127
+ if (!!target.parentElement){
128
+ marta_after_click(target.parentElement.parentElement,"granny");
129
+ };
130
+ if(!marta_confirm_mark){
131
+ e.stopPropagation();
132
+ e.preventDefault();
133
+ };
134
+ };
135
+ };
136
+
137
+ document.addEventListener("click", function(e) {marta_click_work(e)} , true);
138
+
139
+ function marta_after_click(el, what) {
140
+ marta_result[what] = {};
141
+ marta_result["options"][what] = el.tagName;
142
+ marta_add_field("TAG", what, marta_result["options"][what], "taggy");
143
+ for (var att, i = 0, atts = el.attributes, n = atts.length; i < n; i++){
144
+ att = atts[i];
145
+ if(/^[a-zA-Z0-9- _!@#$%^*();:,.?/]*$/.test(att.nodeValue) == true){
146
+ if (/class/.test(att.nodeName) == true){
147
+ var values=att.nodeValue.split(" ");
148
+ marta_result[what][att.nodeName]=[];
149
+ for (var val, j = 0, vals = values, l = vals.length; j < l; j++){
150
+ val = vals[j];
151
+ marta_result[what][att.nodeName][j]=val;
152
+ };
153
+ } else {
154
+ marta_result[what][att.nodeName]=att.nodeValue;
155
+ };
156
+ };
157
+ };
158
+ if (what == "self"){
159
+ try{
160
+ marta_result[what]["retrieved_by_marta_text"]=el.firstChild.nodeValue;
161
+ }catch(e){};
162
+ };
163
+ for (var key in marta_result[what]){
164
+ if (/class/.test(key) == true){
165
+ for (var k = 0, length = marta_result[what][key].length; k < length; k++){
166
+ marta_add_field(what, key, marta_result[what][key][k], k);
167
+ };
168
+ }else
169
+ {
170
+ marta_add_field(what, key, marta_result[what][key], "-1");
171
+ };
172
+ };
173
+ };
174
+
175
+ function marta_delete_line(line) {
176
+ var title = document.getElementById("marta_title"+line);
177
+ var staff = document.getElementById("marta_staff"+line);
178
+ var field = document.getElementById("marta_default_value"+line);
179
+ field.value = "";
180
+ marta_change_field(field);
181
+ title.parentNode.removeChild(title);
182
+ staff.parentNode.removeChild(staff);
183
+ };
@@ -0,0 +1,7 @@
1
+ <html>
2
+ <body>
3
+ <h1>INJECT!</h1>
4
+ <label id=title></label>
5
+ <label id=data></label>
6
+ </body>
7
+ </html>
@@ -0,0 +1,8 @@
1
+ function marta_add_data(){
2
+ document.getElementById("title").innerHTML = marta_what;
3
+ old_marta_Data.innerHTML = old_marta_Data.id
4
+ };
5
+ var marta_result = "";
6
+ var marta_confirm_mark = false;
7
+ setTimeout(function() { marta_result = "Done" }, 1000);
8
+ setTimeout(function() { marta_confirm_mark = true }, 2000);
@@ -0,0 +1,24 @@
1
+ <div id=marta_s_everything martaclass=marta_smthing>
2
+
3
+ <div id=marta_s_text>
4
+ <h2 id=marta_main_title></h2>
5
+ <p>You are about to add some vars to the page_object</p>
6
+ <p>Please use only valid names for ruby vars (no <b>CROCO</b>, <b>special symbols</b>, just <b>some_var</b> or <b>anotherVar</b>)</p>
7
+ <p>You can use variable in the other one adding: <b>#{@your_var}</b> just like in ruby</p>
8
+ <p>Note that @ will be added to your var name automatically.</p>
9
+ <p>So if you have defined <b>something</b> and you wanna use the value of it in the other var you should write <b>#{@something}</b></p>
10
+ <p>You should set a var with the <b>url</b> name if you are gonna use <b>your_page.open_page</b> method later</p>
11
+ <p>Your values provided here will be default for your page_object but you can change it like <b>your_page.your_var = newvalue</b></p>
12
+ </div>
13
+ <div id=marta_s_content>
14
+ <input type=button martaclass=marta_smthing id=marta_more_fields onclick=marta_add_field(); value=Add More />
15
+ <input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
16
+
17
+ <div id=vars_fileds>
18
+ <div class=label>Custom vars:</div>
19
+ <div class=content>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </hr>
24
+ </div>
@@ -0,0 +1,38 @@
1
+ var marta_room = 0;
2
+ var marta_result = {};
3
+ var marta_confirm_mark = false;
4
+
5
+ function marta_add_field() {
6
+ marta_room++;
7
+ var objTo = document.getElementById("vars_fileds");
8
+ var divtest = document.createElement("div");
9
+ divtest.innerHTML = "<div class=label id=marta_title"+marta_room+">Var " + marta_room +":</div><div class=content id=marta_staff"+marta_room+"><span>Name: <input type=text martaclass=marta_smthing class=marta_s_name_field id=marta_name"+marta_room+" value=></span><span>Default value: <input martaclass=marta_smthing type=text id=marta_default_value"+marta_room+" value=></span><input martaclass=marta_smthing type=button onclick=marta_delete_line("+marta_room+") value=Delete id=delete_marta_value"+marta_room+"</div>";
10
+
11
+ objTo.appendChild(divtest);
12
+ };
13
+ function marta_confirm(){
14
+ for(i=1; i<=marta_room; i++){
15
+ if (!!document.getElementById("marta_name"+i) && (document.getElementById("marta_name"+i).value != "")) {
16
+ marta_result[document.getElementById("marta_name"+i).value] = document.getElementById("marta_default_value"+i).value;
17
+ };
18
+ };
19
+ var toClear = document.querySelector("[martaclass=marta_div]");
20
+ toClear.parentNode.removeChild(toClear);
21
+ marta_confirm_mark = true;
22
+ return marta_result;};
23
+
24
+ function marta_add_data() {
25
+ document.getElementById("marta_main_title").innerHTML = "You are defining " + marta_what;
26
+ for (var key in old_marta_Data){
27
+ marta_add_field();
28
+ document.getElementById("marta_name"+marta_room ).value = key;
29
+ document.getElementById("marta_default_value"+marta_room ).value = old_marta_Data[key];
30
+ };
31
+ };
32
+
33
+ function marta_delete_line(line) {
34
+ var title = document.getElementById("marta_title"+line);
35
+ var staff = document.getElementById("marta_staff"+line);
36
+ title.parentNode.removeChild(title);
37
+ staff.parentNode.removeChild(staff);
38
+ };
@@ -0,0 +1,209 @@
1
+ @keyframes marta_found {
2
+ 0% {border: 4px dashed #6495ED;}
3
+ 20% {border: 4px dashed #FF7F50}
4
+ 40% {border: 4px dashed #8FBC8F;}
5
+ 60% {border: 4px dashed #FFA500}
6
+ 80% {border: 4px dashed #DDA0DD}
7
+ 100% {border: 4px dashed #6495ED;}}
8
+
9
+ div#marta_s_everything *, div#marta_s_everything {
10
+ animation : none;
11
+ animation-delay : 0;
12
+ animation-direction : normal;
13
+ animation-duration : 0;
14
+ animation-fill-mode : none;
15
+ animation-iteration-count : 1;
16
+ animation-name : none;
17
+ animation-play-state : running;
18
+ animation-timing-function : ease;
19
+ backface-visibility : visible;
20
+ background : 0;
21
+ background-attachment : scroll;
22
+ background-clip : border-box;
23
+ background-color : transparent;
24
+ background-image : none;
25
+ background-origin : padding-box;
26
+ background-position : 0 0;
27
+ background-position-x : 0;
28
+ background-position-y : 0;
29
+ background-repeat : repeat;
30
+ background-size : auto auto;
31
+ border : 0;
32
+ border-style : none;
33
+ border-width : medium;
34
+ border-color : inherit;
35
+ border-bottom : 0;
36
+ border-bottom-color : inherit;
37
+ border-bottom-left-radius : 0;
38
+ border-bottom-right-radius : 0;
39
+ border-bottom-style : none;
40
+ border-bottom-width : medium;
41
+ border-collapse : separate;
42
+ border-image : none;
43
+ border-left : 0;
44
+ border-left-color : inherit;
45
+ border-left-style : none;
46
+ border-left-width : medium;
47
+ border-radius : 0;
48
+ border-right : 0;
49
+ border-right-color : inherit;
50
+ border-right-style : none;
51
+ border-right-width : medium;
52
+ border-spacing : 0;
53
+ border-top : 0;
54
+ border-top-color : inherit;
55
+ border-top-left-radius : 0;
56
+ border-top-right-radius : 0;
57
+ border-top-style : none;
58
+ border-top-width : medium;
59
+ bottom : auto;
60
+ box-shadow : none;
61
+ box-sizing : content-box;
62
+ caption-side : top;
63
+ clear : none;
64
+ clip : auto;
65
+ color : inherit;
66
+ columns : auto;
67
+ column-count : auto;
68
+ column-fill : balance;
69
+ column-gap : normal;
70
+ column-rule : medium none currentColor;
71
+ column-rule-color : currentColor;
72
+ column-rule-style : none;
73
+ column-rule-width : none;
74
+ column-span : 1;
75
+ column-width : auto;
76
+ content : normal;
77
+ counter-increment : none;
78
+ counter-reset : none;
79
+ cursor : auto;
80
+ direction : ltr;
81
+ empty-cells : show;
82
+ float : none;
83
+ font : normal;
84
+ font-family : inherit;
85
+ font-size : medium;
86
+ font-style : normal;
87
+ font-variant : normal;
88
+ font-weight : normal;
89
+ height : auto;
90
+ hyphens : none;
91
+ left : auto;
92
+ letter-spacing : normal;
93
+ line-height : normal;
94
+ list-style : none;
95
+ list-style-image : none;
96
+ list-style-position : outside;
97
+ list-style-type : disc;
98
+ margin : 0;
99
+ margin-bottom : 0;
100
+ margin-left : 0;
101
+ margin-right : 0;
102
+ margin-top : 0;
103
+ max-height : none;
104
+ max-width : none;
105
+ min-height : 0;
106
+ min-width : 0;
107
+ opacity : 1;
108
+ orphans : 0;
109
+ outline : 0;
110
+ outline-color : invert;
111
+ outline-style : none;
112
+ outline-width : medium;
113
+ overflow : visible;
114
+ overflow-x : visible;
115
+ overflow-y : visible;
116
+ padding : 0;
117
+ padding-bottom : 0;
118
+ padding-left : 0;
119
+ padding-right : 0;
120
+ padding-top : 0;
121
+ page-break-after : auto;
122
+ page-break-before : auto;
123
+ page-break-inside : auto;
124
+ perspective : none;
125
+ perspective-origin : 50% 50%;
126
+
127
+ right : auto;
128
+ tab-size : 8;
129
+ table-layout : auto;
130
+ text-align : inherit;
131
+ text-align-last : auto;
132
+ text-decoration : none;
133
+ text-decoration-color : inherit;
134
+ text-decoration-line : none;
135
+ text-decoration-style : solid;
136
+ text-indent : 0;
137
+ text-shadow : none;
138
+ text-transform : none;
139
+ top : auto;
140
+ transform : none;
141
+ transform-style : flat;
142
+ transition : none;
143
+ transition-delay : 0s;
144
+ transition-duration : 0s;
145
+ transition-property : none;
146
+ transition-timing-function : ease;
147
+ unicode-bidi : normal;
148
+ vertical-align : baseline;
149
+ visibility : visible;
150
+ white-space : normal;
151
+ widows : 0;
152
+ width : auto;
153
+ word-spacing : normal;
154
+
155
+ }
156
+ div#marta_s_everything h2 {
157
+ text-align: center;
158
+ font-size: 20px;}
159
+ div#marta_s_everything {
160
+ position : relative;
161
+ z-index : 150000;
162
+ padding: 0;
163
+ margin: 0;
164
+ margin: 0px 0px 0px 0px;
165
+ border: 4px solid rgb(115,115,100);
166
+ font-size: 14px;
167
+ text-align: left;
168
+ background-color: rgb(230,230,200);
169
+ color: black;
170
+ }
171
+ div#marta_s_everything p {text-align: left;
172
+ margin-left: 20px;}
173
+ div#marta_s_everything p b {color: red;}
174
+ div#marta_s_everything input[type=button] {
175
+ background-color: #4CAF50;
176
+ border: none;
177
+ color: white;
178
+ padding: 8px 16px;
179
+ text-align: center;
180
+ text-decoration: none;
181
+ display: inline-block;
182
+ font-size: 14px;
183
+ }
184
+ div#marta_s_everything input[type=text] {
185
+ width: 50%;
186
+ border-radius: 4px;
187
+ padding: 6px 8px;
188
+ font-size: 14px;
189
+ background-color: rgb(200,230,230);
190
+ }
191
+ div#marta_s_everything input[type=text][martaclass=martanamefield],
192
+ div#marta_s_everything input[type=text].marta_s_name_field{
193
+ width: 20%;
194
+ }
195
+
196
+ div#marta_s_everything div.label,
197
+ div#marta_s_everything label {
198
+ text-decoration: underline;
199
+ font-size: 16px;
200
+ }
201
+ div#marta_s_everything input[type=checkbox]
202
+ { padding-left:5px;
203
+ height:16px;
204
+ display:inline-block;
205
+ line-height:16px;
206
+ background-repeat:no-repeat;
207
+ background-position: 0 0;
208
+ font-size:16px;
209
+ vertical-align:middle;}