-
Notifications
You must be signed in to change notification settings - Fork 1
/
two_sunscreens_in_cart.py
121 lines (100 loc) · 4.22 KB
/
two_sunscreens_in_cart.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
"""
Add two sunscreens in the cart according to the conditions.
SCOPE:
1) Launch Firefox Driver
2) Add sunscreens to the cart accroding to the following conditions
(i) First, select the least expensive sunscreen that is SPF-50
(ii) For your second sunscreen, select the least expensive sunscreen that is SPF-30.
3) Make a list of products to be added
4) Click on the cart
5) Check if all the sunscreens are added by compareing list of products in the cart againist list of products to be added
6) Close the browser
"""
from selenium import webdriver
import time
# Creating an instence of thw web browser and navigating to the Shopping page
driver = webdriver.Chrome()
# Maximize Browser Window
driver.maximize_window()
# Navigate to weathershopper's Sunscreen Page
driver.get('https://weathershopper.pythonanywhere.com/sunscreen')
# Pause the script to wait for page elements to load
time.sleep(3)
# Checking if the control lands on the right web page
if driver.title=="The best moisturizers in the world!":
print("Page found")
else:
print("Invalid Page")
driver.close()
exit()
# Pause the script to wait for page elements to load
time.sleep(3)
# List of all sunscreens
list_sunscreens=driver.find_elements_by_xpath('//div[@class="text-center col-4"]')
# List of products on which are added to cart
products_added=[]
# Finding sunscreens with SPF-50 with their prices
print("\n Products with SPF-50 are :\n")
spf50_list=[]
for i in list_sunscreens:
try:
current_element=i.find_element_by_xpath('.//p[contains(text(),"SPF-50")]')
price_element=i.find_element_by_xpath('.//p[contains(text(),"Price")]').text
price=int(price_element.strip("Price : Rs. "))
print(" ",current_element.text," ",price)
spf50_list.append([i,price])
except Exception as e:
continue
# Finding sunscreen of least price that contains SPF-50
first_min_price=1000
for i,j in spf50_list:
if j<first_min_price:
first_min_price=j
first_product=i
print("\n Product with spf 50 :\n ",first_product.find_element_by_xpath('.//p[contains(text(),"SPF-50")]').text, "\n and cost ",first_product.find_element_by_xpath('.//p[contains(text(),"Price")]').text)
products_added.append(first_product.find_element_by_xpath('.//p[contains(text(),"SPF-50")]').text)
# Adding first product to the cart
first_product_add=first_product.find_element_by_xpath('.//button[text()="Add"]')
first_product_add.click()
# Finding sunscreens with SPF-30 with thier prices
print("\nProducts with SPF-30 are :\n")
spf30_list=[]
for i in list_sunscreens:
try:
current_element=i.find_element_by_xpath('.//p[contains(text(),"SPF-30")]')
price_element=i.find_element_by_xpath('.//p[contains(text(),"Price")]').text
price=int(price_element.strip("Price : Rs. "))
print(" ",current_element.text," ",price)
spf30_list.append([i,price])
except Exception as e:
continue
# Finding sunscreen of least price that contains SPF-30
second_min_price=1000
for i,j in spf30_list:
if j<second_min_price:
second_min_price=j
second_product=i
print("\nProduct with SPF-30 :\n ",second_product.find_element_by_xpath('.//p[contains(text(),"SPF-30")]').text, "\n and cost ",second_product.find_element_by_xpath('.//p[contains(text(),"Price")]').text)
# Adding second product to the cart
products_added.append(second_product.find_element_by_xpath('.//p[contains(text(),"SPF-30")]').text)
second_product_add=second_product.find_element_by_xpath('.//button[text()="Add"]')
second_product_add.click()
# Clicking on cart button to check if required sunscreens are added
cart_button=driver.find_element_by_xpath('//button[@class="thin-text nav-link"]')
cart_button.click()
# Finding products in the cart
cart_items=driver.find_elements_by_xpath('//tbody/tr/td[1]')
cart_products=[]
for element in cart_items:
cart_products.append(element.text)
print("\n Products in the cart are :\n")
print("\n".join(cart_products))
# Checking if the right products are added
if products_added==cart_products:
print("\n Successfully added the products")
else:
print("Failed to add products")
# Pause the script to wait for page elements to load
time.sleep(3)
#Close the browser
driver.close()