Skip to content

Commit cb1ba6c

Browse files
committed
Detect if using an out-of-date ChromeDriver during hover
1 parent 1435d81 commit cb1ba6c

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1236,7 +1236,37 @@ def hover_on_element(self, selector, by=By.CSS_SELECTOR):
12361236
self.__demo_mode_highlight_if_active(selector, by)
12371237
self.scroll_to(selector, by=by)
12381238
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)
12401270

12411271
def hover_and_click(self, hover_selector, click_selector,
12421272
hover_by=By.CSS_SELECTOR, click_by=By.CSS_SELECTOR,

0 commit comments

Comments
 (0)