-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
Copy pathtest_pen.py
98 lines (81 loc) · 3.68 KB
/
test_pen.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
import math
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.interaction import POINTER_PEN
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.common.by import By
def test_use_pen(driver):
driver.get('https://www.selenium.dev/selenium/web/pointerActionsPage.html')
pointer_area = driver.find_element(By.ID, "pointerArea")
pen_input = PointerInput(POINTER_PEN, "default pen")
action = ActionBuilder(driver, mouse=pen_input)
action.pointer_action\
.move_to(pointer_area)\
.pointer_down()\
.move_by(2, 2)\
.pointer_up()
action.perform()
moves = driver.find_elements(By.CLASS_NAME, "pointermove")
move_to = properties(moves[0])
down = properties(driver.find_element(By.CLASS_NAME, "pointerdown"))
move_by = properties(moves[1])
up = properties(driver.find_element(By.CLASS_NAME, "pointerup"))
rect = pointer_area.rect
center_x = rect["x"] + rect["width"] / 2
center_y = rect["y"] + rect["height"] / 2
assert move_to["button"] == "-1"
assert move_to["pointerType"] == "pen"
assert move_to["pageX"] == str(math.floor(center_x))
assert move_to["pageY"] == str(math.floor(center_y))
assert down["button"] == "0"
assert down["pointerType"] == "pen"
assert down["pageX"] == str(math.floor(center_x))
assert down["pageY"] == str(math.floor(center_y))
assert move_by["button"] == "-1"
assert move_by["pointerType"] == "pen"
assert move_by["pageX"] == str(math.floor(center_x + 2))
assert move_by["pageY"] == str(math.floor(center_y + 2))
assert up["button"] == "0"
assert up["pointerType"] == "pen"
assert up["pageX"] == str(math.floor(center_x + 2))
assert up["pageY"] == str(math.floor(center_y + 2))
def test_set_pointer_event_properties(driver):
driver.get('https://www.selenium.dev/selenium/web/pointerActionsPage.html')
pointer_area = driver.find_element(By.ID, "pointerArea")
pen_input = PointerInput(POINTER_PEN, "default pen")
action = ActionBuilder(driver, mouse=pen_input)
action.pointer_action\
.move_to(pointer_area)\
.pointer_down()\
.move_by(2, 2, tilt_x=-72, tilt_y=9, twist=86)\
.pointer_up(0)
action.perform()
moves = driver.find_elements(By.CLASS_NAME, "pointermove")
move_to = properties(moves[0])
down = properties(driver.find_element(By.CLASS_NAME, "pointerdown"))
move_by = properties(moves[1])
up = properties(driver.find_element(By.CLASS_NAME, "pointerup"))
rect = pointer_area.rect
center_x = rect["x"] + rect["width"] / 2
center_y = rect["y"] + rect["height"] / 2
assert move_to["button"] == "-1"
assert move_to["pointerType"] == "pen"
assert move_to["pageX"] == str(math.floor(center_x))
assert move_to["pageY"] == str(math.floor(center_y))
assert down["button"] == "0"
assert down["pointerType"] == "pen"
assert down["pageX"] == str(math.floor(center_x))
assert down["pageY"] == str(math.floor(center_y))
assert move_by["button"] == "-1"
assert move_by["pointerType"] == "pen"
assert move_by["pageX"] == str(math.floor(center_x + 2))
assert move_by["pageY"] == str(math.floor(center_y + 2))
assert move_by["tiltX"] == "-72"
assert move_by["tiltY"] == "9"
assert move_by["twist"] == "86"
assert up["button"] == "0"
assert up["pointerType"] == "pen"
assert up["pageX"] == str(math.floor(center_x + 2))
assert up["pageY"] == str(math.floor(center_y + 2))
def properties(element):
kv = element.text.split(' ', 1)[1].split(', ')
return {x[0]:x[1] for x in list(map(lambda item: item.split(': '), kv))}