Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /