@@ -2243,50 +2243,34 @@ def switch_to_frame_of_element(self, selector, by="css selector"):
2243
2243
"element {%s}!" % selector
2244
2244
)
2245
2245
2246
- def hover_on_element (self, selector, by="css selector"):
2246
+ def hover (self, selector, by="css selector", timeout=None ):
2247
2247
self.__check_scope()
2248
+ if not timeout:
2249
+ timeout = settings.SMALL_TIMEOUT
2250
+ if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
2251
+ timeout = self.__get_new_timeout(timeout)
2248
2252
original_selector = selector
2249
2253
original_by = by
2250
2254
selector, by = self.__recalculate_selector(selector, by)
2251
2255
self.wait_for_element_visible(
2252
- original_selector, by=original_by, timeout=settings.SMALL_TIMEOUT
2256
+ original_selector, by=original_by, timeout=timeout
2253
2257
)
2254
2258
self.__demo_mode_highlight_if_active(original_selector, original_by)
2255
2259
self.scroll_to(selector, by=by)
2256
2260
time.sleep(0.05) # Settle down from scrolling before hovering
2257
- if self.browser != "chrome":
2258
- return page_actions.hover_on_element(self.driver, selector, by)
2259
- # Using Chrome
2260
- # (Pure hover actions won't work on early chromedriver versions)
2261
- try:
2262
- return page_actions.hover_on_element(self.driver, selector, by)
2263
- except WebDriverException:
2264
- driver_capabilities = self.driver.capabilities
2265
- if "version" in driver_capabilities:
2266
- chrome_version = driver_capabilities["version"]
2267
- else:
2268
- chrome_version = driver_capabilities["browserVersion"]
2269
- major_chrome_version = chrome_version.split(".")[0]
2270
- chrome_dict = self.driver.capabilities["chrome"]
2271
- chromedriver_version = chrome_dict["chromedriverVersion"]
2272
- chromedriver_version = chromedriver_version.split(" ")[0]
2273
- major_chromedriver_version = chromedriver_version.split(".")[0]
2274
- install_sb = (
2275
- "seleniumbase get chromedriver %s" % major_chrome_version
2276
- )
2277
- if int(major_chromedriver_version) < int(major_chrome_version):
2278
- # Upgrading the driver is required for performing hover actions
2279
- message = (
2280
- "You need a newer version of\n"
2281
- "chromedriver to perform hover actions!\n"
2282
- "Your version of chromedriver is: %s\n"
2283
- "And your version of Chrome is: %s\n"
2284
- "You can fix this issue by running:\n>>> %s\n"
2285
- % (chromedriver_version, chrome_version, install_sb)
2286
- )
2287
- raise Exception(message)
2288
- else:
2289
- raise
2261
+ element = page_actions.hover_on_element(self.driver, selector, by)
2262
+ if self.recorder_mode:
2263
+ url = self.get_current_url()
2264
+ if url and len(url) > 0:
2265
+ if ("http:") in url or ("https:") in url or ("file:") in url:
2266
+ if self.get_session_storage_item("pause_recorder") == "no":
2267
+ if by == By.XPATH:
2268
+ selector = original_selector
2269
+ time_stamp = self.execute_script("return Date.now();")
2270
+ origin = self.get_origin()
2271
+ action = ["hover", selector, origin, time_stamp]
2272
+ self.__extra_actions.append(action)
2273
+ return element
2290
2274
2291
2275
def hover_and_click(
2292
2276
self,
@@ -7589,6 +7573,24 @@ def click_partial_link(self, partial_link_text, timeout=None):
7589
7573
timeout = self.__get_new_timeout(timeout)
7590
7574
self.click_partial_link_text(partial_link_text, timeout=timeout)
7591
7575
7576
+ def hover_on_element(self, selector, by="css selector", timeout=None):
7577
+ """Same as self.hover()"""
7578
+ self.__check_scope()
7579
+ if not timeout:
7580
+ timeout = settings.SMALL_TIMEOUT
7581
+ if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
7582
+ timeout = self.__get_new_timeout(timeout)
7583
+ return self.hover(selector, by=by, timeout=timeout)
7584
+
7585
+ def hover_over_element(self, selector, by="css selector", timeout=None):
7586
+ """Same as self.hover()"""
7587
+ self.__check_scope()
7588
+ if not timeout:
7589
+ timeout = settings.SMALL_TIMEOUT
7590
+ if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
7591
+ timeout = self.__get_new_timeout(timeout)
7592
+ return self.hover(selector, by=by, timeout=timeout)
7593
+
7592
7594
def wait_for_element_visible(
7593
7595
self, selector, by="css selector", timeout=None
7594
7596
):
0 commit comments