-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathtest_mouse.py
158 lines (108 loc) · 5.04 KB
/
test_mouse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import pytest
from time import sleep
from selenium.webdriver import ActionChains
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.mouse_button import MouseButton
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def test_click_and_hold(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
clickable = driver.find_element(By.ID, "clickable")
ActionChains(driver) \
.click_and_hold(clickable) \
.perform()
sleep(0.5)
assert driver.find_element(By.ID, "click-status").text == "focused"
def test_click_and_release(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
clickable = driver.find_element(By.ID, "click")
ActionChains(driver) \
.click(clickable) \
.perform()
assert "resultPage.html" in driver.current_url
def test_right_click(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
clickable = driver.find_element(By.ID, "clickable")
ActionChains(driver) \
.context_click(clickable) \
.perform()
sleep(0.5)
assert driver.find_element(By.ID, "click-status").text == "context-clicked"
def test_back_click_ab(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
driver.find_element(By.ID, "click").click()
assert driver.title == "We Arrive Here"
action = ActionBuilder(driver)
action.pointer_action.pointer_down(MouseButton.BACK)
action.pointer_action.pointer_up(MouseButton.BACK)
action.perform()
assert driver.title == "BasicMouseInterfaceTest"
def test_forward_click_ab(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
driver.find_element(By.ID, "click").click()
driver.back()
assert driver.title == "BasicMouseInterfaceTest"
action = ActionBuilder(driver)
action.pointer_action.pointer_down(MouseButton.FORWARD)
action.pointer_action.pointer_up(MouseButton.FORWARD)
action.perform()
assert driver.title == "We Arrive Here"
def test_double_click(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
clickable = driver.find_element(By.ID, "clickable")
ActionChains(driver) \
.double_click(clickable) \
.perform()
assert driver.find_element(By.ID, "click-status").text == "double-clicked"
def test_hover(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
hoverable = driver.find_element(By.ID, "hover")
ActionChains(driver) \
.move_to_element(hoverable) \
.perform()
assert driver.find_element(By.ID, "move-status").text == "hovered"
def test_move_by_offset_from_element(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
mouse_tracker = driver.find_element(By.ID, "mouse-tracker")
ActionChains(driver) \
.move_to_element_with_offset(mouse_tracker, 8, 0) \
.perform()
coordinates = driver.find_element(By.ID, "relative-location").text.split(", ")
assert abs(int(coordinates[0]) - 100 - 8) < 2
def test_move_by_offset_from_viewport_origin_ab(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "absolute-location")))
action = ActionBuilder(driver)
action.pointer_action.move_to_location(8, 0)
action.perform()
coordinates = driver.find_element(By.ID, "absolute-location").text.split(", ")
assert abs(int(coordinates[0]) - 8) < 2
def test_move_by_offset_from_current_pointer_ab(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
action = ActionBuilder(driver)
action.pointer_action.move_to_location(6, 3)
action.perform()
ActionChains(driver) \
.move_by_offset(13, 15) \
.perform()
coordinates = driver.find_element(By.ID, "absolute-location").text.split(", ")
assert abs(int(coordinates[0]) - 6 - 13) < 2
assert abs(int(coordinates[1]) - 3 - 15) < 2
def test_drag_and_drop_onto_element(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
draggable = driver.find_element(By.ID, "draggable")
droppable = driver.find_element(By.ID, "droppable")
ActionChains(driver) \
.drag_and_drop(draggable, droppable) \
.perform()
assert driver.find_element(By.ID, "drop-status").text == "dropped"
def test_drag_and_drop_by_offset(driver):
driver.get('https://selenium.dev/selenium/web/mouse_interaction.html')
draggable = driver.find_element(By.ID, "draggable")
start = draggable.location
finish = driver.find_element(By.ID, "droppable").location
ActionChains(driver) \
.drag_and_drop_by_offset(draggable, finish['x'] - start['x'], finish['y'] - start['y']) \
.perform()
assert driver.find_element(By.ID, "drop-status").text == "dropped"