File tree Expand file tree Collapse file tree 3 files changed +69
-0
lines changed
javascript/firefox-driver/js
java/client/test/org/openqa/selenium Expand file tree Collapse file tree 3 files changed +69
-0
lines changed Original file line number Diff line number Diff line change
1
+ <!DOCTYPE html>
2
+ < html >
3
+ < head >
4
+ < title > Upload Form</ title >
5
+ < script >
6
+ var intervalId ;
7
+ function onTick ( ) {
8
+ var label = document . getElementById ( 'upload_label' ) ;
9
+ label . innerHTML += '.' ;
10
+ }
11
+
12
+ function onUploadSubmit ( ) {
13
+ document . getElementById ( 'upload_target' ) . contentWindow . document . body .
14
+ innerHTML = '' ;
15
+ var label = document . getElementById ( 'upload_label' ) ;
16
+ label . innerHTML = 'Uploading "' + document . forms [ 0 ] . upload . value + '"' ;
17
+ label . style . display = '' ;
18
+ intervalId = window . setInterval ( onTick , 500 ) ;
19
+ return true ;
20
+ }
21
+
22
+ function onUploadDone ( ) {
23
+ var label = document . getElementById ( 'upload_label' ) ;
24
+ label . style . display = 'none' ;
25
+ window . clearInterval ( intervalId ) ;
26
+ return true ;
27
+ }
28
+ </ script >
29
+ </ head >
30
+ < body >
31
+ < form action ="/common/upload " method ="post " name ="upload_form "
32
+ target ="upload_target " enctype ="multipart/form-data "
33
+ onsubmit ="onUploadSubmit(); ">
34
+ < div style ='height: 0; width: 0; overflow: hidden; '>
35
+ < div > < input id ="upload " name ="upload " type ="file "/> </ div >
36
+ </ div >
37
+ < label id ="visible_label " for ="upload "> Upload</ label >
38
+ < div > < input id ="go " type ="submit " value ="Go! "/> </ div >
39
+ < div id ="upload_label " style ="display:none "> </ div >
40
+ < iframe src ="" id ="upload_target " name ="upload_target "
41
+ style ="width:300px;height:200px ">
42
+ </ iframe >
43
+ </ form >
44
+ </ body >
45
+ </ html >
Original file line number Diff line number Diff line change @@ -106,6 +106,23 @@ public void testClickFileInput() throws Exception {
106
106
assertThat (ex , instanceOf (InvalidArgumentException .class ));
107
107
}
108
108
109
+ @ Test
110
+ public void testUploadingWithHiddenFileInput () throws Exception {
111
+ driver .get (appServer .whereIs ("upload_invisible.html" ));
112
+ driver .findElement (By .id ("upload" )).sendKeys (testFile .getAbsolutePath ());
113
+ driver .findElement (By .id ("go" )).click ();
114
+
115
+ // Uploading files across a network may take a while, even if they're really small
116
+ WebElement label = driver .findElement (By .id ("upload_label" ));
117
+ wait .until (not (visibilityOf (label )));
118
+
119
+ driver .switchTo ().frame ("upload_target" );
120
+
121
+ WebElement body = driver .findElement (By .xpath ("//body" ));
122
+ wait .until (elementTextToEqual (body , LOREM_IPSUM_TEXT ));
123
+
124
+ }
125
+
109
126
private File createTmpFile (String content ) throws IOException {
110
127
File f = File .createTempFile ("webdriver" , "tmp" );
111
128
f .deleteOnExit ();
Original file line number Diff line number Diff line change @@ -35,6 +35,13 @@ goog.require('bot.dom');
35
35
fxdriver . preconditions . visible = function ( doc , parameters ) {
36
36
var element = Utils . getElementAt ( parameters . id , doc ) ;
37
37
38
+ if ( bot . dom . isElement ( element , goog . dom . TagName . INPUT ) ) {
39
+ var inputtype = element . getAttribute ( 'type' ) ;
40
+ if ( inputtype && inputtype . toLowerCase ( ) == 'file' ) {
41
+ return ;
42
+ }
43
+ }
44
+
38
45
if ( ! bot . dom . isShown ( element , /*ignoreOpacity=*/ true ) ) {
39
46
return new WebDriverError ( bot . ErrorCode . ELEMENT_NOT_VISIBLE ,
40
47
'Element is not currently visible and so may not be interacted with' ) ;
You can’t perform that action at this time.
0 commit comments