@@ -1236,7 +1236,37 @@ def hover_on_element(self, selector, by=By.CSS_SELECTOR):
1236
1236
self .__demo_mode_highlight_if_active (selector , by )
1237
1237
self .scroll_to (selector , by = by )
1238
1238
time .sleep (0.05 ) # Settle down from scrolling before hovering
1239
- return page_actions .hover_on_element (self .driver , selector )
1239
+ if self .browser != "chrome" :
1240
+ return page_actions .hover_on_element (self .driver , selector )
1241
+ # Using Chrome
1242
+ # (Pure hover actions won't work on early chromedriver versions)
1243
+ try :
1244
+ return page_actions .hover_on_element (self .driver , selector )
1245
+ except WebDriverException as e :
1246
+ driver_capabilities = self .driver .__dict__ ["capabilities" ]
1247
+ if "version" in driver_capabilities :
1248
+ chrome_version = driver_capabilities ["version" ]
1249
+ else :
1250
+ chrome_version = driver_capabilities ["browserVersion" ]
1251
+ major_chrome_version = chrome_version .split ('.' )[0 ]
1252
+ chrome_dict = self .driver .__dict__ ["capabilities" ]["chrome" ]
1253
+ chromedriver_version = chrome_dict ["chromedriverVersion" ]
1254
+ chromedriver_version = chromedriver_version .split (' ' )[0 ]
1255
+ major_chromedriver_version = chromedriver_version .split ('.' )[0 ]
1256
+ install_sb = (
1257
+ "seleniumbase install chromedriver %s" % major_chrome_version )
1258
+ if major_chromedriver_version < major_chrome_version :
1259
+ # Upgrading the driver is required for performing hover actions
1260
+ message = (
1261
+ "\n "
1262
+ "You need a newer chromedriver to perform hover actions!\n "
1263
+ "Your version of chromedriver is: %s\n "
1264
+ "And your version of Chrome is: %s\n "
1265
+ "You can fix this issue by running:\n >>> %s\n "
1266
+ "" % (chromedriver_version , chrome_version , install_sb ))
1267
+ raise Exception (message )
1268
+ else :
1269
+ raise Exception (e )
1240
1270
1241
1271
def hover_and_click (self , hover_selector , click_selector ,
1242
1272
hover_by = By .CSS_SELECTOR , click_by = By .CSS_SELECTOR ,
0 commit comments