0

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 Answer 1

0

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"))))

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.