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 until product grid loads (WooCommerce uses this class)
        WebDriverWait(driver, 15).until(
            EC.presence_of_element_located((By.CLASS_NAME, 'products'))
        )
        print("✅ Page content loaded.")
    except:
        print("⚠️ Timed out waiting for product elements.")
        return []

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

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

    product_cards = soup.select('li.product')

    for card in product_cards:
        name_tag = card.select_one('.woocommerce-loop-product__title')
        price_tag = card.select_one('.woocommerce-Price-amount')
        link_tag = card.select_one('a[href]')
        img_tag = card.select_one('img[src]')

        if name_tag and price_tag and link_tag:
            items.append({
                "name": name_tag.get_text(strip=True),
                "price": price_tag.get_text(strip=True),
                "url": link_tag['href'],
                "image": img_tag['src'] if img_tag else None
            })

    return items