0
votes

I am getting this Error Using selenium with Python, not sure how to fix it, I tried with Chromeenter image description here and Firefox, and the same thing: enter image description here Traceback (most recent call last): File "C:/python/bot_test/fast_buy_FF.py", line 56, in checkout = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "turbo-checkout-pyo-button"))) File "C:\Users\basheer.kafaf\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

Code:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from playsound import playsound

# PATH = 'chromedriver.exe'
driver = webdriver.Firefox()



Max_price = 800

Item_code = 'B08N5D31XF'
Item_http_offer_page = 'https://www.amazon.com/dp/{}?smid=ATVPDKIKX0DER&tag=data20-20#aod'.format(Item_code)
Item_http_Product_page = 'https://www.amazon.com/gp/product/{}?tag=ns0ec-20'.format(Item_code)

log_in_email = "XXXXXXXXXXX"
passward = "XXXXXXXXXX"
driver.get("https://www.amazon.com/ref=nav_logo")

sgin_in = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "nav-signin-tooltip")))
sgin_in.click()

ap_email = WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.ID, "ap_email")))
ap_email.send_keys(log_in_email)
search1 = driver.find_element_by_id("continue")
search1.click()

ap_password = WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.ID, "ap_password")))
ap_password.send_keys(passward)
search2 = driver.find_element_by_id("signInSubmit")
search2.click()


time.sleep(1)
New_tab = driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
driver.get(Item_http_Product_page)


Looper = True

while Looper:
    # try:
        buybox = WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.ID, "price_inside_buybox")))
        print (buybox.text)
        item_price = int(float(buybox.text.replace(',', '').replace('$','')))
        print (item_price)

        if  item_price < Max_price:
            # playsound('bells.mp3')
            buy_now= WebDriverWait(driver, 4).until(EC.presence_of_element_located((By.ID, "buy-now-button")))
            buy_now.click()
            checkout = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "turbo-checkout-pyo-button")))
            checkout.click()
            Looper = False



    # except:
    #     print('No buy now available yet ')
    #     time.sleep(1)
    #     driver.refresh()
1

1 Answers

0
votes

this is happening because a new frame opened I needed to switch to the new frame.

so I added the below code to switch to the new frame.

driver.switch_to.frame(WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "iframe"))))