19
19
*/
20
20
Recorder . inputTypes = [ "text" , "password" , "file" , "datetime" , "datetime-local" , "date" , "month" , "time" , "week" , "number" , "range" , "email" , "url" , "search" , "tel" , "color" ] ;
21
21
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
30
35
this . record ( "type" , this . findLocators ( event . target ) , event . target . value ) ;
31
36
}
32
- } else if ( 'textarea' == tagName ) {
33
- //use type for file uploads
34
- this . record ( "type" , this . findLocators ( event . target ) , event . target . value ) ;
35
37
}
36
38
} ) ;
37
39
38
40
/*
39
41
* select / addSelection / removeSelection
40
42
*/
41
43
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 } ) ;
54
58
55
59
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 } ) ;
68
74
69
75
Recorder . prototype . getOptionLocator = function ( option ) {
70
76
var label = option . text . replace ( / ^ * ( .* ?) * $ / , "$1" ) ;
@@ -87,33 +93,35 @@ Recorder.prototype.getOptionLocator = function(option) {
87
93
} ;
88
94
89
95
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
+ } ) ;
117
125
118
126
Recorder . addEventHandler ( 'clickLocator' , 'click' , function ( event ) {
119
127
if ( event . button == 0 ) {
0 commit comments