Skip to content

Commit 509bd72

Browse files
delay fix
1 parent e81db32 commit 509bd72

File tree

1 file changed

+59
-51
lines changed

1 file changed

+59
-51
lines changed

Framework/Built_In_Automation/Web/Selenium/BuiltInFunctions.py

Lines changed: 59 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4910,7 +4910,7 @@ def drag_and_drop(dataset):
49104910
elif left.strip().lower() == "destination offset" and mid.strip().lower() == 'optional parameter':
49114911
destination_offset = right
49124912
elif left.strip().lower() == "delay":
4913-
delay = int(right.strip())
4913+
delay = float(right.strip())
49144914

49154915
if not source:
49164916
CommonUtil.ExecLog(sModuleInfo, 'Please provide source element with "src element parameter", "src parent parameter" etc. Example:\n'+
@@ -4932,59 +4932,67 @@ def drag_and_drop(dataset):
49324932
CommonUtil.ExecLog(sModuleInfo, "Destination Element is not found", 3)
49334933
return "zeuz_failed"
49344934

4935-
if delay:
4936-
if destination_offset:
4937-
destination_x, destination_y = get_offsets(destination_offset, destination_element)
4938-
else:
4939-
destination_x = destination_element.location['x']
4940-
destination_y = destination_element.location['y']
4941-
distance_x = destination_x - source_element.location['x']
4942-
distance_y = destination_y - source_element.location['y']
4943-
total_time = delay
4944-
total_distance = (distance_x**2 + distance_y**2)**0.5
4945-
4946-
pixels_per_step = 5
4947-
steps = int(total_distance / pixels_per_step)
4948-
4949-
# Calculate the ideal time per step to fit within the total time
4950-
ideal_time_per_step = total_time / steps
4951-
4952-
# Start the high-resolution timer
4953-
start_time = time.perf_counter()
4954-
4955-
# Create an ActionChains object
4956-
actions = ActionChains(selenium_driver)
4957-
4958-
# Click and hold the source element
4959-
actions.click_and_hold(source_element).perform()
4960-
4961-
# Manually move the mouse to the target element in small increments
4962-
for i in range(steps):
4963-
# Calculate the movement for this step
4964-
move_x = distance_x / steps
4965-
move_y = distance_y / steps
4966-
4967-
# Move the mouse by the calculated offset
4968-
actions.move_by_offset(move_x, move_y).perform()
4969-
4970-
# Calculate elapsed time and adjust the sleep time
4971-
elapsed_time = time.perf_counter() - start_time
4972-
remaining_time = total_time - elapsed_time
4973-
time_per_step = remaining_time / (steps - i)
4974-
4975-
if time_per_step > 0:
4976-
time.sleep(time_per_step)
4977-
4978-
# Release the mouse button to drop the element
4979-
actions.release().perform()
4980-
sleep(2)
4935+
""" The following code does not work with mentioned delay time. delay=2 takes 25 seconds for a dnd """
4936+
# if delay:
4937+
# if destination_offset:
4938+
# destination_x, destination_y = get_offsets(destination_offset, destination_element)
4939+
# else:
4940+
# destination_x = destination_element.location['x']
4941+
# destination_y = destination_element.location['y']
4942+
# distance_x = destination_x - source_element.location['x']
4943+
# distance_y = destination_y - source_element.location['y']
4944+
# total_time = delay
4945+
# total_distance = (distance_x**2 + distance_y**2)**0.5
4946+
#
4947+
# pixels_per_step = 5
4948+
# steps = int(total_distance / pixels_per_step)
4949+
#
4950+
# # Calculate the ideal time per step to fit within the total time
4951+
# ideal_time_per_step = total_time / steps
4952+
#
4953+
# # Start the high-resolution timer
4954+
# start_time = time.perf_counter()
4955+
#
4956+
# # Create an ActionChains object
4957+
# actions = ActionChains(selenium_driver)
4958+
#
4959+
# # Click and hold the source element
4960+
# actions.click_and_hold(source_element).perform()
4961+
#
4962+
# # Manually move the mouse to the target element in small increments
4963+
# for i in range(steps):
4964+
# # Calculate the movement for this step
4965+
# move_x = distance_x / steps
4966+
# move_y = distance_y / steps
4967+
#
4968+
# # Move the mouse by the calculated offset
4969+
# actions.move_by_offset(move_x, move_y).perform()
4970+
#
4971+
# # Calculate elapsed time and adjust the sleep time
4972+
# elapsed_time = time.perf_counter() - start_time
4973+
# remaining_time = total_time - elapsed_time
4974+
# time_per_step = remaining_time / (steps - i)
4975+
#
4976+
# if time_per_step > 0:
4977+
# time.sleep(time_per_step)
4978+
#
4979+
# # Release the mouse button to drop the element
4980+
# actions.release().perform()
4981+
# sleep(2)
49814982

4982-
elif destination_offset:
4983+
if destination_offset:
49834984
x, y = get_offsets(destination_offset, destination_element)
4984-
ActionChains(selenium_driver).click_and_hold(source_element).move_to_element_with_offset(destination_element, x, y).release().perform()
4985+
if delay:
4986+
""" This line of code was not tested, just keeping here"""
4987+
ActionChains(selenium_driver).click_and_hold(source_element).move_to_element_with_offset(destination_element, x, y).pause(0.5).release().perform()
4988+
else:
4989+
ActionChains(selenium_driver).click_and_hold(source_element).move_to_element_with_offset(destination_element, x, y).release().perform()
4990+
49854991
else:
4986-
ActionChains(selenium_driver).drag_and_drop(source_element, destination_element).perform()
4987-
# ActionChains(selenium_driver).click_and_hold(source_element).move_to_element(destination_element).pause(0.5).release(destination_element).perform()
4992+
if delay:
4993+
ActionChains(selenium_driver).click_and_hold(source_element).move_to_element(destination_element).pause(0.5).release(destination_element).perform()
4994+
else:
4995+
ActionChains(selenium_driver).drag_and_drop(source_element, destination_element).perform()
49884996

49894997
CommonUtil.ExecLog(sModuleInfo, "Drag and drop completed from source to destination", 1)
49904998
return "passed"

0 commit comments

Comments
 (0)