Skip to content

Commit b8da069

Browse files
adding few methods and screenshot path
1 parent 05116e0 commit b8da069

File tree

5 files changed

+167
-6
lines changed

5 files changed

+167
-6
lines changed

Library/driver.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from selenium import webdriver
2+
from selenium.common.exceptions import NoSuchElementException
23
from selenium.webdriver.remote import webelement
4+
import os
35
from Library.store import Store
46

57

@@ -26,9 +28,35 @@ def get(self, url: str) -> None:
2628
self.driver.get(url)
2729

2830
def find_element(self, by, value) -> webelement.WebElement:
29-
return self.driver.find_element(by, value)
31+
try:
32+
return self.driver.find_element(by, value)
33+
except NoSuchElementException:
34+
print("Element not found \n\n" + by + "\n" + value)
35+
except Exception as e:
36+
print("Error in finding the element \n\n" + by + "\n" + value + "\nException: \n" + str(e))
3037

31-
def quit(self):
32-
self.driver.quit()
38+
def find_elements(self, by, value) -> list[webelement.WebElement]:
39+
try:
40+
return self.driver.find_elements(by, value)
41+
except NoSuchElementException:
42+
print("Element not found \n\n" + by + "\n" + value)
43+
except Exception as e:
44+
print("Error in finding the element \n\n" + by + "\n" + value + "\nException: \n" + str(e))
45+
46+
def refresh(self) -> None:
47+
self.driver.refresh()
48+
49+
def execute_script(self, script, locator) -> None:
50+
self.driver.execute_script(self, script, locator)
3351

52+
def current_url(self) -> str:
53+
return self.driver.current_url
3454

55+
def save_screenshot(self) -> bool:
56+
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
57+
CONFIG_PATH = os.path.join(ROOT_DIR, 'configuration.conf')
58+
self.driver.save_screenshot(self, )
59+
60+
61+
def quit(self):
62+
self.driver.quit()

Library/locator.py

Lines changed: 134 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,143 @@
1+
from selenium.webdriver import ActionChains
2+
import selenium.webdriver.support.ui as ui
3+
from selenium.webdriver.remote import webelement
14
from Library.store import Store
25

36

47
class Locator(Store):
58

69
def __init__(self, by: str, value: str) -> None:
10+
super().__init__()
711
self.by = by
812
self.value = value
913

10-
def send_keys(self, string) -> None:
11-
Store.current_driver.find_element(self.by, self.value).send_keys(string)
14+
def send_keys(self, string) -> bool:
15+
try:
16+
Store.current_driver.find_element(self.by, self.value).send_keys(string)
17+
except Exception as e:
18+
print("Send keys not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
19+
return False
20+
else:
21+
return True
22+
23+
def click(self) -> bool:
24+
try:
25+
Store.current_driver.find_element(self.by, self.value).click
26+
except Exception as e:
27+
print("click not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
28+
return False
29+
else:
30+
return True
31+
32+
def mouse_over(self) -> bool:
33+
hovering_element = Store.current_driver.find_element(self.by, self.value)
34+
hover = ActionChains(Store.current_driver).move_to_element(hovering_element)
35+
try:
36+
hover.perform()
37+
except Exception as e:
38+
print("mouse_over not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
39+
return False
40+
else:
41+
return True
42+
43+
def text(self) -> str:
44+
try:
45+
txt_value = Store.current_driver.find_element(self.by, self.value).text
46+
except Exception as e:
47+
print("get text not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
48+
return False
49+
else:
50+
return txt_value
51+
52+
def texts(self) -> list:
53+
try:
54+
arr_text = []
55+
elements = Store.current_driver.find_elements(self.by, self.value)
56+
for ele in elements:
57+
arr_text.append(ele.text)
58+
except Exception as e:
59+
print("get texts not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
60+
return [False]
61+
else:
62+
return arr_text
63+
64+
def is_displayed(self) -> bool:
65+
try:
66+
return Store.current_driver.find_elements(self.by, self.value).is_displayed()
67+
except Exception as e:
68+
print("is_displayed not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
69+
return False
70+
71+
def is_enabled(self) -> bool:
72+
try:
73+
return Store.current_driver.find_elements(self.by, self.value).is_enabled()
74+
except Exception as e:
75+
print("is_enabled not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
76+
return False
77+
78+
def is_displayed_with_wait(self, timeout=10) -> bool:
79+
try:
80+
wait = ui.WebDriverWait(Store.current_driver, timeout)
81+
return wait.until(lambda element: Store.current_driver.find_element(self.by, self.value).is_displayed())
82+
except Exception as e:
83+
print("is_displayed_with_wait not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
84+
return False
85+
86+
def click_if_displayed(self) -> bool:
87+
try:
88+
self.is_displayed_with_wait()
89+
var = Store.current_driver.find_element(self.by, self.value).click
90+
except Exception as e:
91+
print("click if displayed not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
92+
return False
93+
else:
94+
return True
95+
96+
def scroll_to_locator(self) -> bool:
97+
try:
98+
scroll_locator = Store.current_driver.find_element(self.by, self.value)
99+
actions = ActionChains(Store.current_driver)
100+
actions.move_to_element(scroll_locator)
101+
actions.perform()
102+
except Exception as e:
103+
print("scroll to locator not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
104+
return False
105+
else:
106+
return True
107+
108+
def scroll_to_locator_using_js(self) -> bool:
109+
try:
110+
scroll_locator = Store.current_driver.find_element(self.by, self.value)
111+
Store.current_driver.execute_script('arguments[0].scrollIntoView(true);', scroll_locator)
112+
except Exception as e:
113+
print("scroll to locator using js not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
114+
return False
115+
else:
116+
return True
117+
118+
def move_and_click(self) -> bool:
119+
try:
120+
self.scroll_to_locator()
121+
self.mouse_over()
122+
self.click()
123+
except Exception as e:
124+
print("move and click not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
125+
return False
126+
else:
127+
return True
128+
129+
def get_element(self) -> webelement.WebElement:
130+
try:
131+
return Store.current_driver.find_element(self.by, self.value)
132+
except Exception as e:
133+
print("scroll to locator using js not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
134+
135+
def clear_and_send_keys(self, string) -> bool:
136+
try:
137+
var = Store.current_driver.find_element(self.by, self.value).clear
138+
Store.current_driver.find_element(self.by, self.value).send_keys(string)
139+
except Exception as e:
140+
print("Clear and Send keys not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))
141+
return False
142+
else:
143+
return True

Library/store.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from selenium import webdriver
22
from selenium.webdriver.chrome.webdriver import WebDriver
33

4+
45
class Store:
56
drivers = []
67
current_driver = None

Pages/google.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
class GooglePage(GoogleLocator):
55

66
def __init__(self):
7-
super
7+
super().__init__()
88

99
@classmethod
1010
def enter_search_text(cls, string):

screenshots/.ignore

Whitespace-only changes.

0 commit comments

Comments
 (0)