forked from Group-Project-Team-4/Selenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_script_2.py
171 lines (128 loc) · 5.48 KB
/
test_script_2.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
159
160
161
162
163
164
165
166
167
168
169
170
171
"""
This script automates a series of web interactions on a specified web application using Selenium WebDriver with Chrome.
It performs the following tasks:
1. Opens the web application and takes screenshots at various stages.
2. Registers a new user with a randomly generated username.
3. Logs in with the newly created user credentials.
4. Navigates through the web application, simulating a shopping process by adding items to the cart and then removing them.
5. Attempts a checkout operation, handling alert pop-ups for test verification.
6. Logs out after completing the tests.
7. Measures and prints the total execution time of the script.
Note: ChromeDriver needs to be installed and added to the system PATH.
ChromeDriver: https://googlechromelabs.github.io/chrome-for-testing/#stable
"""
import time
import random
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
USERNAME = f"user{random.randint(1, 100)}"
PASSWORD = "12345"
def main() -> None:
# Record start time of test
start_time = time.time()
# Instantiate a Chrome WebDriver instance
driver = webdriver.Chrome()
# Enter the webapp's url (localhost doesn't work so used full url instead)
driver.get('http://127.0.0.1:5000')
driver.save_screenshot("./screenshots_test2/landing-page.png")
time.sleep(0.5)
try:
# Enter site
shop = driver.find_element(By.LINK_TEXT, "Shop Now")
shop.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/enter_site.png")
# Register
register = driver.find_element(By.LINK_TEXT, "Register")
register.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/register_page.png")
username_input = driver.find_element(By.ID, "register_username_textinput")
username_input.send_keys(USERNAME)
time.sleep(0.25)
password_input = driver.find_element(By.ID, "register_password_textinput")
password_input.send_keys(PASSWORD)
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/register.png")
password_input.send_keys(Keys.ENTER)
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/register_success.png")
# Login
login_link = driver.find_element(By.ID, "base_login_anchor")
login_link.click()
time.sleep(0.25)
username_input = driver.find_element(By.ID, "login_username_textinput")
username_input.send_keys(USERNAME)
time.sleep(0.25)
password_input = driver.find_element(By.ID, "login_password_textinput")
password_input.send_keys(PASSWORD)
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/login.png")
login_button = driver.find_element(By.ID, "login_submit_button")
login_button.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/login_success.png")
# Shop for multiple items
enter_shop = driver.find_element(By.LINK_TEXT, "Shop Now")
enter_shop.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/enter_shop.png")
# Select item to add to cart
url = "/shop/8"
necklace_item = driver.find_element(By.XPATH, '//a[@href="'+url+'"]')
necklace_item.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/necklace.png")
# Add more then one item
add_to_cart = driver.find_element(By.ID, "add-to-cart-button")
add_to_cart.click()
time.sleep(0.25)
driver.back()
add_to_cart.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/many_necklaces_in_cart.png")
# Remove items from cart
remove = driver.find_element(By.CLASS_NAME, "cart-item-remove")
remove.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/empty-cart.png")
# Checkout
checkout = driver.find_element(By.LINK_TEXT, "Checkout")
driver.execute_script('alert("Checkout link should stay on same page while cart is empty!")')
time.sleep(2)
# Switches focus to the new alert
alert = driver.switch_to.alert
# Presses "OK" to accept alert
alert.accept()
time.sleep(0.25)
checkout.click()
driver.execute_script('alert("This is the same page")')
time.sleep(2)
alert = driver.switch_to.alert
alert.accept()
# Alert that all tests have completed successfully
driver.execute_script('alert("All tests are complete, thank you!")')
time.sleep(2)
# Switches focus to the new alert
alert = driver.switch_to.alert
# Presses "OK" to accept alert
alert.accept()
time.sleep(0.25)
# Logout
logout = driver.find_element(By.ID, "base_logout_anchor")
logout.click()
time.sleep(0.25)
driver.save_screenshot("./screenshots_test2/logout_test_complete.png")
# Records the end time of the test
end_time = time.time()
# Calculates length of time test took to Execute
execution_time = end_time - start_time
print(execution_time)
except NoSuchElementException as err:
print(err)
# Closes the Chrome WebDriver instance
driver.quit()
if __name__ == "__main__":
main()