File tree Expand file tree Collapse file tree 2 files changed +30
-1
lines changed 
lib/selenium/webdriver/common 
spec/unit/selenium/webdriver/chrome Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -131,11 +131,20 @@ def w3c?(key)
131131
132132      def  process_w3c_options ( options ) 
133133        w3c_options  =  options . select  {  |key ,  val | w3c? ( key )  && !val . nil?  } 
134-         w3c_options [ :unhandled_prompt_behavior ]  &&= w3c_options [ :unhandled_prompt_behavior ] &.to_s &.tr ( '_' ,  ' ' ) 
134+         w3c_options [ :unhandled_prompt_behavior ]  &&=
135+           process_unhandled_prompt_behavior_value ( w3c_options [ :unhandled_prompt_behavior ] ) 
135136        options . delete_if  {  |key ,  _val | w3c? ( key )  } 
136137        w3c_options 
137138      end 
138139
140+       def  process_unhandled_prompt_behavior_value ( value ) 
141+         if  value . is_a? ( Hash ) 
142+           value . transform_values  {  |v | process_unhandled_prompt_behavior_value ( v )  } 
143+         else 
144+           value &.to_s &.tr ( '_' ,  ' ' ) 
145+         end 
146+       end 
147+ 
139148      def  process_browser_options ( _browser_options ) 
140149        nil 
141150      end 
Original file line number Diff line number Diff line change @@ -267,6 +267,26 @@ module Chrome
267267                                         { 'args'  =>  [ "--user-data-dir=#{ directory }  " ] } ) 
268268          end 
269269
270+           it  'processes unhandled_prompt_behavior hash values'  do 
271+             opts  =  described_class . new ( unhandled_prompt_behavior : { 
272+                                          alert : :accept_and_notify , 
273+                                          confirm : 'dismiss_and_notify' , 
274+                                          prompt : :ignore , 
275+                                          before_unload : 'accept' , 
276+                                          default : :dismiss 
277+                                        } ) 
278+ 
279+             expect ( opts . as_json ) . to  eq ( 'browserName'  =>  'chrome' , 
280+                                        'unhandledPromptBehavior'  =>  { 
281+                                          'alert'  =>  'accept and notify' , 
282+                                          'confirm'  =>  'dismiss and notify' , 
283+                                          'prompt'  =>  'ignore' , 
284+                                          'beforeUnload'  =>  'accept' , 
285+                                          'default'  =>  'dismiss' 
286+                                        } , 
287+                                        'goog:chromeOptions'  =>  { } ) 
288+           end 
289+ 
270290          it  'returns a JSON hash'  do 
271291            allow ( File ) . to  receive ( :file? ) . and_return ( true ) 
272292            allow_any_instance_of ( described_class ) 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments