@@ -659,7 +659,7 @@ WebDriverJsView.prototype.updateSessionDepControls = function() {
659659 var control = sessionDepControls [ controlIndex ] ;
660660 control . disabled = disable ;
661661 }
662- }
662+ } ;
663663
664664WebDriverJsView . prototype . setSessionId = function ( id ) {
665665 var element = document . getElementById ( 'sessionIdLabel' ) ;
@@ -668,7 +668,7 @@ WebDriverJsView.prototype.setSessionId = function(id) {
668668 } else {
669669 element . innerHTML = '' ;
670670 }
671- }
671+ } ;
672672
673673WebDriverJsView . prototype . setFoundElementId = function ( id ) {
674674 var element = document . getElementById ( 'foundElement' ) ;
@@ -681,7 +681,25 @@ WebDriverJsView.prototype.setFoundElementId = function(id) {
681681 this . setError ( id . ELEMENT . message ) ;
682682 document . getElementById ( 'elementActions' ) . style . visibility = 'hidden' ;
683683 }
684- }
684+ } ;
685+
686+ WebDriverJsView . prototype . setWindowList = function ( handles , activeWindowHandle ) {
687+ var select = document . getElementById ( 'windowList' ) ;
688+ select . innerHTML = '' ;
689+ for ( var handleIndex in handles ) {
690+ var handle = handles [ handleIndex ] ;
691+ var item = document . createElement ( 'option' ) ;
692+ item . setAttribute ( 'value' , handle ) ;
693+ item . innerHTML = handle ;
694+ if ( activeWindowHandle == handle ) {
695+ item . innerHTML += ' (active)' ;
696+ item . selected = true ;
697+ }
698+ select . appendChild ( item )
699+ }
700+ document . getElementById ( 'windowList' ) . style . visibility = 'visible' ;
701+ document . getElementById ( 'chooseWindow' ) . style . visibility = 'visible' ;
702+ } ;
685703
686704WebDriverJsView . prototype . setError = function ( message ) {
687705 var element = document . getElementById ( 'error' ) ;
@@ -716,9 +734,9 @@ WebDriverJsController.prototype.setServerUrl = function(serverUrl) {
716734}
717735
718736WebDriverJsController . prototype . setWebPage = function ( webPage ) {
719- this . element = null ;
720-
721- this . driver . get ( webPage ) ;
737+ if ( webPage !== this . webPage ) {
738+ this . element = null ;
739+ }
722740
723741 this . webPage = webPage ;
724742 if ( localStorage )
@@ -739,6 +757,7 @@ WebDriverJsController.prototype.updateDriver = function() {
739757 } ) ;
740758 } else if ( webPage !== this . webPage ) {
741759 this . setWebPage ( webPage ) ;
760+ this . driver . get ( webPage ) ;
742761 }
743762} ;
744763
@@ -863,23 +882,9 @@ WebDriverJsController.prototype.onSendKeys = function(key) {
863882
864883WebDriverJsController . prototype . onListWindowHandles = function ( ) {
865884 var self = this ;
866- var select = document . getElementById ( 'windowList' ) ;
867885 this . driver . getWindowHandle ( ) . then ( function ( activeWindowHandle ) {
868886 self . driver . getAllWindowHandles ( ) . then ( function ( handles ) {
869- select . innerHTML = '' ;
870- for ( var handleIndex in handles ) {
871- var handle = handles [ handleIndex ] ;
872- var item = document . createElement ( 'option' ) ;
873- item . setAttribute ( 'value' , handle ) ;
874- item . innerHTML = handle ;
875- if ( activeWindowHandle == handle ) {
876- item . innerHTML += ' (active)' ;
877- item . selected = true ;
878- }
879- select . appendChild ( item )
880- }
881- document . getElementById ( 'windowList' ) . style . visibility = 'visible' ;
882- document . getElementById ( 'chooseWindow' ) . style . visibility = 'visible' ;
887+ self . view . setWindowList ( handles , activeWindowHandle ) ;
883888 } ) ;
884889 } ) ;
885890} ;
@@ -889,6 +894,9 @@ WebDriverJsController.prototype.onChooseWindow = function() {
889894 var handle = document . getElementById ( 'windowList' ) . value ;
890895 this . driver . switchTo ( ) . window ( handle ) . then ( function ( ) {
891896 self . onListWindowHandles ( ) ;
897+ return self . driver . getCurrentUrl ( ) ;
898+ } ) . then ( function ( url ) {
899+ self . setWebPage ( url ) ;
892900 } ) ;
893901} ;
894902
0 commit comments