import time
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def scrape(driver, url):
    driver.get(url)

    try:
        # Wait for key content to load
        WebDriverWait(driver, 15).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '[data-ux="CommerceCardTitle"]'))
        )
        print("✅ Page content loaded.")
    except:
        print("⚠️ Timed out waiting for product elements.")

    time.sleep(1.5)  # Give JS time to finish rendering

    soup = BeautifulSoup(driver.page_source, 'html.parser')
    items = []

    titles = soup.select('[data-ux="CommerceCardTitle"]')
    prices = soup.select('[data-ux="CommerceItemPrice"]')

    for title, price in zip(titles, prices):
        items.append({
            "name": title.get_text(strip=True),
            "price": price.get_text(strip=True)
        })

    return items