Skip to content

Commit 3b7466a

Browse files
committed
Fix recording errors
1 parent 91d26bb commit 3b7466a

File tree

1 file changed

+70
-62
lines changed

1 file changed

+70
-62
lines changed

ide/main/src/content/recorder-handlers.js

+70-62
Original file line numberDiff line numberDiff line change
@@ -19,52 +19,58 @@
1919
*/
2020
Recorder.inputTypes = ["text", "password", "file", "datetime", "datetime-local", "date", "month", "time", "week", "number", "range", "email", "url", "search", "tel", "color"];
2121
Recorder.addEventHandler('type', 'change', function(event) {
22-
var tagName = event.target.tagName.toLowerCase();
23-
var type = event.target.type;
24-
if ('input' == tagName && Recorder.inputTypes.indexOf(type) >= 0) {
25-
if (event.target.value.length > 0) {
26-
// TODO figure out if we need sendKeys or type and record it
27-
this.record("type", this.findLocators(event.target), event.target.value);
28-
} else {
29-
//use type to clear
22+
if (event.target.tagName) {
23+
var tagName = event.target.tagName.toLowerCase();
24+
var type = event.target.type;
25+
if ('input' == tagName && Recorder.inputTypes.indexOf(type) >= 0) {
26+
if (event.target.value.length > 0) {
27+
// TODO figure out if we need sendKeys or type and record it
28+
this.record("type", this.findLocators(event.target), event.target.value);
29+
} else {
30+
//use type to clear
31+
this.record("type", this.findLocators(event.target), event.target.value);
32+
}
33+
} else if ('textarea' == tagName) {
34+
//use type for file uploads
3035
this.record("type", this.findLocators(event.target), event.target.value);
3136
}
32-
} else if ('textarea' == tagName) {
33-
//use type for file uploads
34-
this.record("type", this.findLocators(event.target), event.target.value);
3537
}
3638
});
3739

3840
/*
3941
* select / addSelection / removeSelection
4042
*/
4143
Recorder.addEventHandler('selectFocus', 'focus', function(event) {
42-
var tagName = event.target.nodeName.toLowerCase();
43-
if ('select' == tagName && event.target.multiple) {
44-
this.log.debug('remembering selections');
45-
var options = event.target.options;
46-
for (var i = 0; i < options.length; i++) {
47-
if (options[i]._wasSelected == null) {
48-
// is the focus was gained by mousedown event, _wasSelected would be already set
49-
options[i]._wasSelected = options[i].selected;
50-
}
51-
}
52-
}
53-
}, { capture: true });
44+
if (event.target.nodeName) {
45+
var tagName = event.target.nodeName.toLowerCase();
46+
if ('select' == tagName && event.target.multiple) {
47+
this.log.debug('remembering selections');
48+
var options = event.target.options;
49+
for (var i = 0; i < options.length; i++) {
50+
if (options[i]._wasSelected == null) {
51+
// is the focus was gained by mousedown event, _wasSelected would be already set
52+
options[i]._wasSelected = options[i].selected;
53+
}
54+
}
55+
}
56+
}
57+
}, { capture: true });
5458

5559
Recorder.addEventHandler('selectMousedown', 'mousedown', function(event) {
56-
var tagName = event.target.nodeName.toLowerCase();
57-
if ('option' == tagName) {
58-
var parent = event.target.parentNode;
59-
if (parent.multiple) {
60-
this.log.debug('remembering selections');
61-
var options = parent.options;
62-
for (var i = 0; i < options.length; i++) {
63-
options[i]._wasSelected = options[i].selected;
64-
}
65-
}
66-
}
67-
}, { capture: true });
60+
if (event.target.nodeName) {
61+
var tagName = event.target.nodeName.toLowerCase();
62+
if ('option' == tagName) {
63+
var parent = event.target.parentNode;
64+
if (parent.multiple) {
65+
this.log.debug('remembering selections');
66+
var options = parent.options;
67+
for (var i = 0; i < options.length; i++) {
68+
options[i]._wasSelected = options[i].selected;
69+
}
70+
}
71+
}
72+
}
73+
}, { capture: true });
6874

6975
Recorder.prototype.getOptionLocator = function(option) {
7076
var label = option.text.replace(/^ *(.*?) *$/, "$1");
@@ -87,33 +93,35 @@ Recorder.prototype.getOptionLocator = function(option) {
8793
};
8894

8995
Recorder.addEventHandler('select', 'change', function(event) {
90-
var tagName = event.target.tagName.toLowerCase();
91-
if ('select' == tagName) {
92-
if (!event.target.multiple) {
93-
var option = event.target.options[event.target.selectedIndex];
94-
this.log.debug('selectedIndex=' + event.target.selectedIndex);
95-
this.record("select", this.findLocators(event.target), this.getOptionLocator(option));
96-
} else {
97-
this.log.debug('change selection on select-multiple');
98-
var options = event.target.options;
99-
for (var i = 0; i < options.length; i++) {
100-
this.log.debug('option=' + i + ', ' + options[i].selected);
101-
if (options[i]._wasSelected == null) {
102-
this.log.warn('_wasSelected was not recorded');
103-
}
104-
if (options[i]._wasSelected != options[i].selected) {
105-
var value = this.getOptionLocator(options[i]);
106-
if (options[i].selected) {
107-
this.record("addSelection", this.findLocators(event.target), value);
108-
} else {
109-
this.record("removeSelection", this.findLocators(event.target), value);
110-
}
111-
options[i]._wasSelected = options[i].selected;
112-
}
113-
}
114-
}
115-
}
116-
});
96+
if (event.target.tagName) {
97+
var tagName = event.target.tagName.toLowerCase();
98+
if ('select' == tagName) {
99+
if (!event.target.multiple) {
100+
var option = event.target.options[event.target.selectedIndex];
101+
this.log.debug('selectedIndex=' + event.target.selectedIndex);
102+
this.record("select", this.findLocators(event.target), this.getOptionLocator(option));
103+
} else {
104+
this.log.debug('change selection on select-multiple');
105+
var options = event.target.options;
106+
for (var i = 0; i < options.length; i++) {
107+
this.log.debug('option=' + i + ', ' + options[i].selected);
108+
if (options[i]._wasSelected == null) {
109+
this.log.warn('_wasSelected was not recorded');
110+
}
111+
if (options[i]._wasSelected != options[i].selected) {
112+
var value = this.getOptionLocator(options[i]);
113+
if (options[i].selected) {
114+
this.record("addSelection", this.findLocators(event.target), value);
115+
} else {
116+
this.record("removeSelection", this.findLocators(event.target), value);
117+
}
118+
options[i]._wasSelected = options[i].selected;
119+
}
120+
}
121+
}
122+
}
123+
}
124+
});
117125

118126
Recorder.addEventHandler('clickLocator', 'click', function(event) {
119127
if (event.button == 0) {

0 commit comments

Comments
 (0)