@@ -526,22 +526,30 @@ def click_button(self, locator, modifier=False):
526526 element = self .find_element (locator , tag = 'button' )
527527 element .click ()
528528 else :
529- self ._click_with_modifier (locator , 'button' , modifier )
529+ self ._click_with_modifier (locator , [ 'button' , 'input' ] , modifier )
530530
531531 @keyword
532- def click_image (self , locator ):
532+ def click_image (self , locator , modifier = False ):
533533 """Clicks an image identified by ``locator``.
534534
535535 See the `Locating elements` section for details about the locator
536536 syntax. When using the default locator strategy, images are searched
537537 using ``id``, ``name``, ``src`` and ``alt``.
538+
539+ See the `Click Element` keyword for details about the
540+ ``modifier`` argument.
541+
542+ The ``modifier`` argument is new in SeleniumLibrary 3.3
538543 """
539- self .info ("Clicking image '%s'." % locator )
540- element = self .find_element (locator , tag = 'image' , required = False )
541- if not element :
542- # A form may have an image as it's submit trigger.
543- element = self .find_element (locator , tag = 'input' )
544- element .click ()
544+ if is_falsy (modifier ):
545+ self .info ("Clicking image '%s'." % locator )
546+ element = self .find_element (locator , tag = 'image' , required = False )
547+ if not element :
548+ # A form may have an image as it's submit trigger.
549+ element = self .find_element (locator , tag = 'input' )
550+ element .click ()
551+ else :
552+ self ._click_with_modifier (locator , ['image' , 'input' ], modifier )
545553
546554 @keyword
547555 def click_link (self , locator , modifier = False ):
@@ -560,7 +568,7 @@ def click_link(self, locator, modifier=False):
560568 self .info ("Clicking link '%s'." % locator )
561569 self .find_element (locator , tag = 'link' ).click ()
562570 else :
563- self ._click_with_modifier (locator , 'link' , modifier )
571+ self ._click_with_modifier (locator , [ 'link' , 'link' ] , modifier )
564572
565573 @keyword
566574 def click_element (self , locator , modifier = False ):
@@ -589,15 +597,18 @@ def click_element(self, locator, modifier=False):
589597 self .info ("Clicking element '%s'." % locator )
590598 self .find_element (locator ).click ()
591599 else :
592- self ._click_with_modifier (locator , None , modifier )
600+ self ._click_with_modifier (locator , [ None , None ] , modifier )
593601
594602 def _click_with_modifier (self , locator , tag , modifier ):
595- self .info ("Clicking %s '%s' with %s." % (tag if tag else 'element' , locator , modifier ))
603+ self .info ("Clicking %s '%s' with %s." % (tag if tag [ 0 ] else 'element' , locator , modifier ))
596604 modifier = self .parse_modifier (modifier )
597605 action = ActionChains (self .driver )
598606 for item in modifier :
599607 action .key_down (item )
600- action .click (self .find_element (locator , tag = tag ))
608+ element = self .find_element (locator , tag = tag [0 ], required = False )
609+ if not element :
610+ element = self .find_element (locator , tag = tag [1 ])
611+ action .click (element )
601612 for item in modifier :
602613 action .key_up (item )
603614 action .perform ()
0 commit comments