Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

#DISCLAIMER

#IF YOU DONT USE A VPN AND CHANGE YOUR IP EVERY FEW HOURS YOU WILL GET
IP BANNED FROM NEWEGG FOR 24 HOURS. IF YOU DONT HAVE A VPN
#THEN YOU CAN INCREASE THE TIME BETWEEN SLEEPS THE SECOND TO LAST LINE
OF CODE 'time.sleep(random.uniform(X,Y))' X MUST BE LESS THAN Y I.E.
'time.sleep(random.uniform(6,20))'
#I AM NOT RESPONSIBLE FOR ANY ACTIONS YOU TAKE WHEN USING THIS CODE OR
ANY ERRORS YOU MAKE WHEN USING THIS CODE

#START INSTRUCTIONS FOR MAKING THE CODE WORK ON YOUR


PC------------------------------------------------------------------------

#STEPS
#1. DOWNLOAD PYTHON. I SPECIFICALLY DOWNLOADED ANACONDA BECAUSE IT
COMES WITH JUPYTER NOTEBOOKS
#2. ANACONDA IS DOWNLOADED. NOW OPEN JUPYTER NOTEBOOKS THROUGH THE
ANACONDA NAVIGATOR
#3. LOOK UP HOW TO FIND WHERE YOUR JUPYTER NOTEBOOK FILES ARE LOCATED.
THEY WILL BE LOCATED SOMEWHERE IN YOUR DOCUMENTS
#4. FOR EACH OF THE LINES OF CODE AT THE BEGINNING OF THIS FILE THAT HAVE
'import' YOU NEED TO FOLLOW THESE STEP.
#a. IN YOUR COMPUTER SEARCH BAR ON THE BOTTOM LEFT OF THE HOME
SCREEN (WINDOWS 10) TYPE IN 'ANACONDA PROMPT' OPEN IT
#b. TYPE IN 'PIP INSTALL XXXX' (TYPE IN WITHOUT THE QUOTES) WHERE XXXX IS
'SELENIUM' , 'KEYBOARD' , 'TIME' , 'SYS' , 'RANDOM'
#c. REPEATE STEPS a. AND b. FOR EACH ITEM REPRESENTING 'XXXX'
#5. DOWNLOAD CHROME AND GOOGLE THE TERM 'CHROME DRIVER DOWNLOAD'
DOWNLOAD THAT CHROME DRIVER AND SAVE IT TO THE SAME FOLDER JUPYTER
NOTEBOOK IS LOCATED
#6. YOU CAN USE COOKIES TO REMEMBER YOUR SETTINGS WHICH I RECOMMEND
DOING. IN ORDER TO DO THIS IN THE WINDOWS SEARCH BAR TYPE IN
#'FILE EXPLORER OPTIONS' OPEN THE OPTIONS AND NAVIGATE TO THE 'VIEW' TAB
GO DOWN TO 'SHOW HIDDEN FILES, FOLDERS, AND DRIVES'
# ENABLE THAT SETTING
#a. GO TO THIS PC -> USERS -> YOUR PROFILE -> APPDATA -> LOCAL -> GOOGLE ->
CHROME -> USER DATA
#i. YOU CAN COPY THIS FOLDER AND NAME IT SOMETHING ELSE AND THEN
UPDATE STEP b. WITH THE NEW NAME TO AVOID GETTING ANY ERRORS. I
RECOMMEND DOING THIS.
#b. STEP a. HAS BROUGHT YOU TO YOUR COOKIES. THAT FILE PATH THAT YOU
WENT TO, COPY IT AND PUT IT AFTER "user-data-dir=c:\\" IN THE CODE BELLOW
#IN ORDER FOR IT TO WORK YOU NEED TO PUT TWO BACK SLASHES WHERE
THERE ARE SINGLE BACK SLASHES IN THE FILE PATH OTHERWISE IT WILL THROW
AN ERROR
#7. YOU CAN MAKE THIS CODE WORK FOR ANY ITEM ON NEWEGG (I THINK)
#a. GO TO NEWEGG.COM AND BROWES TO A CATEGORY YOU ARE INTERESTED IN
FOR MY CASE LETS PICK A 3060ti AND I WANT A SPECIFIC ONE
#b. NAVIGATE TO THIS PAGE https://www.newegg.com/Desktop-Graphics-
Cards/SubCategory/ID-48?Tid=7709
#c. ON THE LEFT HAND SIDE FILTER THE RESULTS TO ONLY BE FOR 3060 TI WHICH
SHOULD LOOK LIKE THIS https://www.newegg.com/p/pl?
N=100007709%20601359415&PageSize=96
#d. I SPECIFICALLY WANT EVGA GeForce RTX 3060 Ti FTW ULTRA GAMING Video
Card, 08G-P5-3667-KR, 8GB GDDR6, iCX3 Cooling, ARGB LED
#e. GO TO THE CODE BELLOW AND INSERT THE NEW URL AFTER 'WEBPAGE =' IN
QUOTATIONS!
#f. GO TO THE CODE BELLOW AND CHANGE THE KEYWORDS TO (ALL LOWERCASE
ALWAYS!)
# keyword = 'evga geforce rtx 3060 ti'
# keyword2 = 'ftw ultra'
# keyword3 = 'gaming video card'

# keyword4 = '$$$$$$'
# keyword5 = '$$$$$$'
# keyword6 = '$$$$$$'

# WHAT ARE THE RULES FOR THE KEYWORDS? BASICALLY EACH KEYWORD
WILL LOOK FOR THE PHRASE YOU TYPE IN EXACTLY! IF YOU HAVE A TYPO
# OR YOU HAVE A SPACE OR A PERIOD ETC THEN THE TITLE OF THE CARD ON
THE WEBSITE BETTER ALSO HAVE THAT. FOR EXAMPLE IF YOU MADE
# KEYWORD = 'evga' KEYWORD2 = '3060' KEYWORD3 = 'ti' IT WOULD RETURN ALL
GRAPHICS CARDS MADE BY EVGA THAT ARE ALSO 3060 AND ti
# KEYWORDS 4 5 AND 6 ARE ONLY USED IF YOU WANT TO LOOK FOR A SECOND
CARD IN A DIFFERENT PRICE RANGE. I CREATED THEM BECAUSE I WAS INTERESTED
# IN BUYING A 3080, 3090, OR RX 6900 XT. THE PROBLEM IS THAT A SCALPER
COULD LIST A 3080 FOR $1,300 SO I NEEDED A SECOND SET OF
# MIN AND MAX PRICE TO CHECK. MAKE THE KEYWORD 4, 5, OR 6 VALUES '$$$$
$$$' IF YOU'RE ONLY LOOKING IN ONE PRICE RANGE
#8. GO TO THE CODE BELLOW AND ENTER THE MINIMUM PRICE AND MAXIMUM
PRICE YOU'RE WILLING TO PAY. MY ADVICE IS TO SET THE MINIMUM ONLY $50 OR
SO DOLLARS LESS
#THAN WHAT THE ITEM COSTS SO YOU NEVER ACCIDENTLY PURCHASE THE
INCORRECT ITEM.
#9. RUN THE CODE. TO DO THAT IN JUPYTER NOTEBOOK HOLD 'LEFT SHIFT' AND
PRESS 'ENTER'
#10. GOOD LUCK

#END INSTRUCTIONS FOR MAKING THE CODE WORK ON YOUR


PC--------------------------------------------------------------------

#NEWEGG 01/07/2021
#YOU NEED TO USE PYTHON AND JUPYTER NOTEBOOKS TO RUN THIS CODE
OTHERWISE YOU NEED TO MODIFY THE CODE
#ONCE YOU HAVE EVERYTHING SETUP YOU NEED TO GO TO YOUR COMPUTERS
CMD PROMPT AND TYPE IN 'PIP INSTALL SELENIUM' AND ANY OTHER LIBRARIES
THAT ARE MISSING
#YOU CANT BE LOGGED INTO NEWEGG. YOU CANNOT HAVE TWO FACTOR
AUTHENTICATION FOR PAYPAL
import selenium
import keyboard
import time
import sys
import random
from random import uniform
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu")
#DOWNLOAD THE CHROMEDRIVER AND SAVE IT TO WHERE YOU INSTALLED YOUR
JUPYTER NOTEBOOK
#BELLOW THERE ARE QUESTION MARKS THIS IS BECAUSE YOU NEED TO ENABLE
HIDDEN FOLDERS IN WINDOWS AND THEN FIGURE OUT THE PATH TO YOUR
CHROME DIRECTORY. ITS USUALLY UNDER USERS\\USERNAME\\APPDATA ->
chrome_options.add_argument("user-data-
dir=C:\\Users\\Pictures_of_nude_pears\\AppData\\Local\\Google\\Chrome\\User Data 16")
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(executable_path = 'chromedriver.exe',options=chrome_options)
webpage = 'https://www.newegg.com/p/pl?N=100007709%20601359415&PageSize=96'
start_url = webpage
driver.get(start_url)
skip = 0
multiplier = 1

#-------------------------------------------------------USER INPUTS
START---------------------------------------------------------

#SET YOUR PRICES


maxprice = 0 #SET YOUR MAXIMUM PRICE YOU WOULD PAY FOR THE CARD YOU
WANT
minprice = 0 #SET YOUR MINIMUM PRICE YOU WOULD PAY FOR THE CARD YOU WANT

#THIS SECOND SET OF PRICES IS ONLY WHAT YOU WOULD PAY FOR KEYWORDS 4
AND 5
max3080price = 0
min3080price = 0

#YOUR PAYPAL EMAIL AND PAYPAL PASSWORD. PLEASE GO THROUGH THE CODE TO
MAKE SURE THERE IS NO MALICIOUS INTENT WITH THIS INFORMATION
Email = 'EMAIL' #PAYPAL EMAIL MUST BE IN QUOTES LIKE THAT
Password = 'PASSWORD' #PAYPAL PASSWORD MUST BE IN QUOTES LIKE THAT

#KEYWORDS FOR THE CODE TO LOOK FOR


#KEYWORD CODE LINES ARE LOCATED AT LINES 365, 477, 627, 740. IF YOU
UNDERSTAND THOSE LINES THEN YOU CAN EDIT THIS SECTION
keyword = 'evga geforce rtx 3060 ti'
keyword2 = 'ftw ultra'
keyword3 = 'gaming video card'

keyword4 = '$$$$$$$$$$$'
keyword5 = '$$$$$$$$$$$'
keyword6 = '$$$$$$$$$$$'

#-------------------------------------------------------USER INPUTS
END-----------------------------------------------------------

#-------------------------------------------------------CLASSES
START-------------------------------------------------------------

def clickloop(CSS_SELECTOR):
y=0
skip = 0
while True:
try:
Waitelement = WebDriverWait(elements[x],
1).until(EC.element_to_be_clickable((By.CSS_SELECTOR, CSS_SELECTOR)))
button = elements[x].find_element_by_css_selector(CSS_SELECTOR).click()
break
except:
print('ClickLoop Failed to click#: ' + str(y))
y=y+1
if y == 3:
skip = 1
return skip
break

def addtocart(CSS_SELECTOR):
y=0
skip = 0
while True:
try:
Waitelement = WebDriverWait(driver,
1).until(EC.element_to_be_clickable((By.CSS_SELECTOR, CSS_SELECTOR)))
button = driver.find_element_by_css_selector(CSS_SELECTOR).click()
break
except:
print('ClickLoop Failed to click#: ' + str(y))
y=y+1
if y == 3:
skip = 1
return skip
break

def listwraploop(CSS_SELECTOR):
y=0
skip = 0
while True:
try:
driver.refresh()
Waitelement = WebDriverWait(elements[x],
3).until(EC.visibility_of_element_located((By.CSS_SELECTOR, CSS_SELECTOR)))
elements = elements[x].find_element_by_css_selector(CSS_SELECTOR)
return elements
break
except:
print('ListWrapLoop Failed to click#: ' + str(y))
y=y+1
if y == 3:
skip = 1
return skip
break

def ItemPageLoop(CSS_SELECTOR):
y=0
skip = 0
while True:
try:
driver.refresh()
WebDriverWait(driver,
5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.product-buy-box li.price-
current')))
ItemPagePrice = driver.find_element_by_css_selector('div.product-buy-box li.price-
current').text
print(ItemPagePrice)
return ItemPagePrice
break
except:
print('ItemPageLoop Failed to click#: ' + str(y))
y=y+1
if y == 3:
skip = 1
return skip
break

def ItemNameLoop(CSS_SELECTOR):
y=0
skip = 0
while True:
try:
driver.refresh()
WebDriverWait(driver,
5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.product-main.display-flex
h1.product-title')))
ItemName = driver.find_element_by_css_selector('div.product-main.display-flex
h1.product-title').text
print(ItemName)
return ItemName
break
except:
print('ItemNameLoop Failed to click#: ' + str(y))
y=y+1
if y == 3:
skip = 1
return skip
break

def ConvertPrice(currentprice):
findcomma = currentprice.find(",")
finddollar = currentprice.find("$")
offer = currentprice.find('offer')
if offer == -1:
offer = currentprice.find('Offer')
right = (currentprice[findcomma+1:])
left = (currentprice[finddollar+1:findcomma])
findinsideparenthsis = currentprice.find('(')
if offer >= 0:
if findcomma == -1:
left = (currentprice[finddollar+1:findinsideparenthsis-1])
price = float(left)
return price
else:
right = (currentprice[findcomma+1:findinsideparenthsis-1])
left = (currentprice[finddollar+1:findcomma])
price = float(left + right)
return price
elif findcomma == -1:
right = (currentprice[findcomma+1:])
left = (currentprice[finddollar+1:])
price = float(left)
return price
else:
right = (currentprice[findcomma+1:])
left = (currentprice[finddollar+1:findcomma])
price = float(left + right)
return price
#PRICE FINISH

class color:
PURPLE = '\033[95m'
CYAN = '\033[96m'
DARKCYAN = '\033[36m'
BLUE = '\033[94m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
END = '\033[0m'

#-------------------------------------------------------CLASSES
END-------------------------------------------------------------
time.sleep(5)

elements = driver.find_elements_by_css_selector('div.list-wrap div.item-container')


print(color.BOLD + 'Number of items located on page: ' + str(len(elements)) + color.END)
print('')
print('')

counter = 0

while True:

#print('Counter: ' + str(counter))


counter = counter + 1

for x in range(len(elements)):

checker = 0
skip = 0

try:
WebDriverWait(driver,
20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.list-wrap div.item-
container')))
elements = driver.find_elements_by_css_selector('div.list-wrap div.item-container')
except:
print('Entering clickloop for div.list-wrap div.item-container loop counter: ' + str(x))
CSS_SELECTOR = 'div.list-wrap div.item-container'
skip = listwraploop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
elements = skip

if checker == 0:
try:
checker = 1
Waitelement = WebDriverWait(elements[len(elements)-1],
15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a.item-title')))
except:
print('Waited for checker but didnt find element')

print('-----------------------------------------------------------------------------------------------------------------
------------')
try:
stock = elements[x].find_element_by_css_selector('p.item-promo').text
except:
stock = 'NO OUT OF STOCK MESSAGE'
print(stock)

if stock == 'NO OUT OF STOCK MESSAGE':


try:
buttontype = elements[x].find_element_by_css_selector('button.btn.btn-mini').text
print("Button type: " + buttontype)
except:
buttontype = 'NULL BUTTON TYPE'
print('NO BUTTON TYPE AVAILABLE')

if buttontype =='VIEW DETAILS' or buttontype =='ADD TO CART':


if buttontype == 'VIEW DETAILS':
try:
Waitelement = WebDriverWait(elements[x],
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btn.btn-mini')))
button = elements[x].find_element_by_css_selector('button.btn.btn-mini').click()
except:
print('ENTERING CLICKLOOP FOR button.btn.btn-mini loop counter: ' + str(x))
CSS_SELECTOR = 'button.btn.btn-mini'
skip = clickloop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

try:
WebDriverWait(driver,
5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.product-buy-box li.price-
current')))
currentprice = driver.find_element_by_css_selector('div.product-buy-box li.price-
current').text
except:
print('COULD NOT FIND PRICE ON ITEM PAGE')
CSS_SELECTOR = 'div.product-buy-box li.price-current'
skip = ItemPageLoop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')
print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
currentprice = skip

price = ConvertPrice(currentprice)

print("Price: " + str(price))

if price >= minprice and price <= maxprice:

print('PRICE IS WITHIN THRESHHOLD CHECKING FOR KEYWORD')

try:
WebDriverWait(driver,
5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.product-main.display-flex
h1.product-title')))
ItemName = driver.find_element_by_css_selector('div.product-main.display-flex
h1.product-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')
CSS_SELECTOR = 'div.product-main.display-flex h1.product-title'
skip = ItemNameLoop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
ItemName = skip

ItemName = ItemName.lower()

if (ItemName.find(keyword) != -1 and ItemName.find(keyword2) != -1 and


ItemName.find(keyword3) != -1) or (ItemName.find(keyword4) != -1 and
ItemName.find(keyword6) != -1):
print('KEYWORD MATCHES ATTEMPTING TO ADD TO CART')
try:
Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.product-buy-box button.btn.btn-
primary.btn-wide')))
button = driver.find_element_by_css_selector('div.product-buy-box
button.btn.btn-primary.btn-wide').click()
print('ADDED TO CART SUCCESSFULLY')
except:
print('CLICKED ADD TO CART SUCCESSFULLY')
CSS_SELECTOR = 'div.row-side button.btn.btn-primary.btn-wide'
skip = addtocart(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

time.sleep(3)

driver.get('https://secure.newegg.com/shop/cart')

try:

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'iframe.co
mponent-frame.visible')))

driver.switch_to.frame(driver.find_element_by_css_selector('iframe.component-frame.visible'))
except:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue')))
button = driver.find_element_by_css_selector('div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue').click()

current_window = driver.window_handles[0]

paypal_window = driver.window_handles[1]
driver.switch_to.window(paypal_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validate.validateEmpty')))
single_element.click()
single_element.clear()
single_element.send_keys(Email)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validateEmpty.pin-password')))
single_element.click()
single_element.clear()
single_element.send_keys(Password)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.button.actionContinue')))
single_element.click()

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.ppvx_btn')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

driver.switch_to.window(current_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.checkout-step[data-status=add]
button.btn.btn-primary.checkout-step-action-done.layout-quarter')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.summary-actions button.btn.btn-
primary.btn-wide')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

sys.exit('YOU MIGHT HAVE BOUGHT YOURSELF A GRAPHICS CARD!')


else:
print('KEYWORD DOES NOT MATCH CONTINUING LOOP')

print("----------------------------------------------------------------------------------------------------------------
-------------")
driver.get(start_url)
continue

elif price >= min3080price and price <= max3080price:


print('PRICE IS WITHIN THRESHHOLD CHECKING FOR KEYWORD')

try:
WebDriverWait(driver,
5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.product-main.display-flex
h1.product-title')))
ItemName = driver.find_element_by_css_selector('div.product-main.display-flex
h1.product-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')
CSS_SELECTOR = 'div.product-main.display-flex h1.product-title'
skip = ItemNameLoop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
ItemName = skip

ItemName = ItemName.lower()

if (ItemName.find(keyword4) != -1 and ItemName.find(keyword5) != -1):


print('KEYWORD MATCHES ATTEMPTING TO ADD TO CART')
try:
Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.product-buy-box button.btn.btn-
primary.btn-wide')))
button = driver.find_element_by_css_selector('div.product-buy-box
button.btn.btn-primary.btn-wide').click()
print('CLICKED ADD TO CART SUCCESSFULLY')
except:
print('COULD NOT CLICK ADD TO CART')
CSS_SELECTOR = 'div.row-side button.btn.btn-primary.btn-wide'
skip = addtocart(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

time.sleep(3)

driver.get('https://secure.newegg.com/shop/cart')

try:

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'iframe.co
mponent-frame.visible')))

driver.switch_to.frame(driver.find_element_by_css_selector('iframe.component-frame.visible'))
except:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue')))
button = driver.find_element_by_css_selector('div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue').click()

current_window = driver.window_handles[0]

paypal_window = driver.window_handles[1]
driver.switch_to.window(paypal_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validate.validateEmpty')))
single_element.click()
single_element.clear()
single_element.send_keys(Email)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validateEmpty.pin-password')))
single_element.click()
single_element.clear()
single_element.send_keys(Password)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.button.actionContinue')))
single_element.click()

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.ppvx_btn')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

driver.switch_to.window(current_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.checkout-step[data-status=add]
button.btn.btn-primary.checkout-step-action-done.layout-quarter')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.summary-actions button.btn.btn-
primary.btn-wide')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

sys.exit('YOU MIGHT HAVE BOUGHT YOURSELF A GRAPHICS CARD!')

else:
print('KEYWORD DOES NOT MATCH CONTINUING LOOP')
print("----------------------------------------------------------------------------------------------------------------
-------------")
driver.get(start_url)
continue

else:
print('PRICE IS NOT WITHIN THRESHHOLD CONTINUING LOOP')
try:
WebDriverWait(elements[x],
15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a.item-title')))
ItemName = elements[x].find_element_by_css_selector('a.item-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')

print("----------------------------------------------------------------------------------------------------------------
-------------")
driver.get(start_url)
continue

print("----------------------------------------------------------------------------------------------------------------
-------------")

elif buttontype == 'ADD TO CART':

try:
Waitelement = WebDriverWait(elements[x],
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.item-container li.price-current')))
currentprice = elements[x].find_element_by_css_selector('div.item-container
li.price-current').text
except:
print('COULD NOT FIND PRICE ABOVE ADD TO CART')
CSS_SELECTOR = 'div.item-container li.price-current'
skip = listwraploop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
price = skip

price = ConvertPrice(currentprice)

print("Price: " + str(price))


if price >= minprice and price <= maxprice:

print('PRICE IS WITHIN THRESHHOLD CHECKING FOR KEYWORD')

try:
WebDriverWait(elements[x],
15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a.item-title')))
ItemName = elements[x].find_element_by_css_selector('a.item-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')
CSS_SELECTOR = 'a.item-title'
skip = listwraploop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
ItemName = skip

ItemName = ItemName.lower()

if (ItemName.find(keyword) != -1 and ItemName.find(keyword2) != -1 and


ItemName.find(keyword3) != -1) or (ItemName.find(keyword4) != -1 and
ItemName.find(keyword6) != -1):
print('KEYWORD MATCHES ATTEMPTING TO ADD TO CART')
try:
Waitelement = WebDriverWait(elements[x],
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btn.btn-mini')))
button = elements[x].find_element_by_css_selector('button.btn.btn-
mini').click()
print('CLICKED ADD TO CART SUCCESSFULLY')
except:
print('COULD NOT CLICK ADD TO CART')
CSS_SELECTOR = 'button.btn.btn-mini'
skip = addtocart(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

time.sleep(3)

driver.get('https://secure.newegg.com/shop/cart')

try:

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'iframe.co
mponent-frame.visible')))

driver.switch_to.frame(driver.find_element_by_css_selector('iframe.component-frame.visible'))
except:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue')))
button = driver.find_element_by_css_selector('div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue').click()

current_window = driver.window_handles[0]

paypal_window = driver.window_handles[1]
driver.switch_to.window(paypal_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validate.validateEmpty')))
single_element.click()
single_element.clear()
single_element.send_keys(Email)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validateEmpty.pin-password')))
single_element.click()
single_element.clear()
single_element.send_keys(Password)
single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.button.actionContinue')))
single_element.click()

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.ppvx_btn')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

driver.switch_to.window(current_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.checkout-step[data-status=add]
button.btn.btn-primary.checkout-step-action-done.layout-quarter')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.summary-actions button.btn.btn-
primary.btn-wide')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

sys.exit('YOU MIGHT HAVE BOUGHT YOURSELF A GRAPHICS CARD!')

else:
print('KEYWORD DOES NOT MATCH CONTINUING LOOP')

print("----------------------------------------------------------------------------------------------------------------
-------------")
driver.get(start_url)
continue

elif price >= min3080price and price <= max3080price:

print('PRICE IS WITHIN THRESHHOLD CHECKING FOR KEYWORD')


try:
WebDriverWait(elements[x],
15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a.item-title')))
ItemName = elements[x].find_element_by_css_selector('a.item-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')
CSS_SELECTOR = 'a.item-title'
skip = listwraploop(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue
else:
ItemName = skip

ItemName = ItemName.lower()

if (ItemName.find(keyword4) != -1 and ItemName.find(keyword5) != -1):


print('KEYWORD MATCHES ATTEMPTING TO ADD TO CART')
try:
Waitelement = WebDriverWait(elements[x],
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btn.btn-mini')))
button = elements[x].find_element_by_css_selector('button.btn.btn-
mini').click()
print('CLICKED ADD TO CART SUCCESSFULLY')
except:
print('COULD NOT CLICK ADD TO CART')
CSS_SELECTOR = 'button.btn.btn-mini'
skip = addtocart(CSS_SELECTOR)
if skip == 1:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

time.sleep(3)

driver.get('https://secure.newegg.com/shop/cart')
try:

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'iframe.co
mponent-frame.visible')))

driver.switch_to.frame(driver.find_element_by_css_selector('iframe.component-frame.visible'))
except:
driver.get(start_url)

print("----------------------------------------------------------------------------------------------------------------
-------------")
print('SKIPPED FORWARD DUE TO ERROR')

print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

Waitelement = WebDriverWait(driver,
15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue')))
button = driver.find_element_by_css_selector('div.paypal-button.paypal-button-
number-0.paypal-button-layout-vertical.paypal-button-shape-rect.paypal-button-number-
single.paypal-button-env-production.paypal-button-color-gold.paypal-button-text-color-
black.paypal-logo-color-blue').click()

current_window = driver.window_handles[0]

paypal_window = driver.window_handles[1]
driver.switch_to.window(paypal_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validate.validateEmpty')))
single_element.click()
single_element.clear()
single_element.send_keys(Email)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.textInput
input.hasHelp.validateEmpty.pin-password')))
single_element.click()
single_element.clear()
single_element.send_keys(Password)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.button.actionContinue')))
single_element.click()

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.ppvx_btn')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

driver.switch_to.window(current_window)

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.checkout-step[data-status=add]
button.btn.btn-primary.checkout-step-action-done.layout-quarter')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

single_element = WebDriverWait(driver,
20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.summary-actions button.btn.btn-
primary.btn-wide')))
tryloop = 0
while tryloop != 25:
try:
single_element.click()
except:
time.sleep(0.1)
tryloop = tryloop + 1

sys.exit('YOU MIGHT HAVE BOUGHT YOURSELF A GRAPHICS CARD!')

else:
print('KEYWORD DOES NOT MATCH CONTINUING LOOP')

print("----------------------------------------------------------------------------------------------------------------
-------------")
driver.get(start_url)
continue

else:
print('PRICE IS NOT WITHIN THRESHHOLD CONTINUING LOOP')
try:
WebDriverWait(elements[x],
15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'a.item-title')))
ItemName = elements[x].find_element_by_css_selector('a.item-title').text
print(ItemName)
except:
print('COULD NOT FIND ITEM NAME')
print("----------------------------------------------------------------------------------------------------------------
-------------")
continue

print("----------------------------------------------------------------------------------------------------------------
-------------")
else:
print('SHOULD NEVER REACH THIS ELSE INSIDE IF STATEMENT')

print("----------------------------------------------------------------------------------------------------------------
-------------")
else:

print('-----------------------------------------------------------------------------------------------------------------
------------')

else:
if counter == 100:
print('Amount of times looped: ' + str(counter * multiplier))
multiplier = multiplier + 1
counter = 1
#print('ITEM OUT OF STOCK')

#print('---------------------------------------------------------------------------------------------------------------
--------------')

checker = 0
time.sleep(random.uniform(1,4))
driver.refresh()

You might also like