1
1
import random
2
-
2
+ from selenium . webdriver . common . by import By
3
3
from selenium .webdriver .support import expected_conditions as EC
4
4
from selenium .webdriver .support .ui import WebDriverWait
5
+ from selenium .webdriver .remote .webdriver import WebDriver
5
6
7
+ from typing import Union
6
8
7
- def click (driver , element ):
9
+ def click (driver : WebDriver , element ):
8
10
"""
9
11
Used to resolve issues caused while clicking an element.
10
12
Very often, elements are overlayed in such a way that a click isn't as simple as it should be.
@@ -17,60 +19,52 @@ def click(driver, element):
17
19
18
20
19
21
class YouFindPlaceHolder :
20
- def __init__ (self , text ):
22
+ def __init__ (self , text : str ):
21
23
self .text = text
22
24
23
25
def __call__ (self , driver ):
24
- element = driver .find_element_by_xpath ( f'//input[@placeholder=" { self . text } "]' )
25
- if element :
26
- return element
27
- else :
28
- return False
26
+ element = driver .find_element (
27
+ By . XPATH ,
28
+ f'//input[@placeholder=" { self . text } "]'
29
+ )
30
+ return element or False
29
31
30
32
31
33
class YouFindText :
32
- def __init__ (self , text ):
34
+ def __init__ (self , text : str ):
33
35
self .text = text
34
36
35
37
def __call__ (self , driver ):
36
- element = driver .find_element_by_xpath (f'//*[contains(text(), "{ self .text } ")]' )
37
- if element :
38
- return element
39
- else :
40
- return False
38
+ element = driver .find_element (By .XPATH , f'//*[contains(text(), "{ self .text } ")]' )
39
+ return element or False
41
40
42
41
43
42
class YouFindButtonText :
44
- def __init__ (self , text ):
43
+ def __init__ (self , text : str ):
45
44
self .text = text
46
45
47
- def __call__ (self , driver ):
48
- element = driver .find_element_by_xpath (f'//button[.="{ self .text } "]' )
49
- if element :
50
- return element
51
- else :
52
- return False
46
+ def __call__ (self , driver : WebDriver ):
47
+ element = driver .find_element (By .XPATH , f'//button[.="{ self .text } "]' )
48
+ return element or False
53
49
54
50
55
51
class YouFindAllText :
56
- def __init__ (self , text ):
52
+ def __init__ (self , text : str ):
57
53
self .text = text
58
54
59
- def __call__ (self , driver ):
60
- elements = driver .find_elements_by_xpath (
55
+ def __call__ (self , driver : WebDriver ):
56
+ elements = driver .find_elements (
57
+ By .XPATH ,
61
58
f'//*[contains(text(), "{ self .text } ")]' ,
62
59
)
63
- if elements :
64
- return elements
65
- else :
66
- return False
60
+ return elements or False
67
61
68
62
69
63
class URLToBe :
70
- def __init__ (self , url ):
64
+ def __init__ (self , url : str ):
71
65
self .url = url
72
66
73
- def __call__ (self , driver ):
67
+ def __call__ (self , driver : WebDriver ):
74
68
try :
75
69
res = EC .url_to_be (self .url )(driver )
76
70
if res :
@@ -81,7 +75,12 @@ def __call__(self, driver):
81
75
return EC .url_to_be (f'{ self .url } /' )(driver )
82
76
83
77
84
- def wait_until (driver , expected_condition , value , timeout = 10 ):
78
+ def wait_until (
79
+ driver : WebDriver ,
80
+ expected_condition ,
81
+ value ,
82
+ timeout : int = 10
83
+ ):
85
84
"""
86
85
Allows you to wait until some condition is met.
87
86
@@ -120,7 +119,12 @@ def wait_until(driver, expected_condition, value, timeout=10):
120
119
return WebDriverWait (driver , timeout ).until (ec (value ), message = msg )
121
120
122
121
123
- def potential_refresh (driver , expected_condition , value , chance = 0.99 ):
122
+ def potential_refresh (
123
+ driver : WebDriver ,
124
+ expected_condition ,
125
+ value ,
126
+ chance : float = 0.99
127
+ ):
124
128
if random .uniform (0 , 1 ) > chance :
125
129
driver .refresh ()
126
130
return wait_until (driver , expected_condition , value )
0 commit comments