✏️ 正在编辑: oakberry_automation.py
路径:
/home/ubuntu/oakberry_automation.py
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options def automate_oakberry_purchase(email, password, product_name, quantity): chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") driver = webdriver.Chrome(service=Service(r"/usr/bin/chromedriver"), options=chrome_options) driver.maximize_window() try: driver.get("https://oak.foodchains.com.br/") time.sleep(3) # Esperar a página carregar completamente WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "email"))) # Tentar fechar o pop-up de boas-vindas, se existir, antes do login try: # Esperar o overlay do modal aparecer e então tentar fechar o botão WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".modals-overlay"))) close_button = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.action-close"))) close_button.click() WebDriverWait(driver, 5).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, ".modals-overlay"))) except: pass # Pop-up não apareceu ou já foi removido # 2. Fazer login WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "email"))).send_keys(email) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "pass"))).send_keys(password) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "send2"))).click() # Esperar o login ser concluído e a página inicial carregar WebDriverWait(driver, 10).until(EC.url_to_be("https://oak.foodchains.com.br/")) time.sleep(3) # Esperar a página pós-login carregar completamente # Tentar fechar o pop-up de boas-vindas, se existir, após o login try: WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".modals-overlay"))) driver.execute_script("document.querySelector(\".modals-overlay\").remove();") time.sleep(1) # Pequena pausa após fechar o pop-up except: pass # Pop-up não apareceu ou já foi removido # 3. Adicionar no carrinho 5 itens do produto "ACAI OAKBERRY BALDE 7KG" # Usar a barra de pesquisa para encontrar o produto search_input = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "search"))) search_input.send_keys(product_name) search_input.send_keys(Keys.RETURN) # Esperar a página de resultados da pesquisa carregar WebDriverWait(driver, 10).until(EC.url_contains("/catalogsearch/result/")) # Encontrar o contêiner do produto pelo nome na página de resultados product_element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, f"//a[contains(text(), \'{product_name}\')]")) ) product_container = product_element.find_element(By.XPATH, ".//ancestor::div[contains(@class, \'product-item-info\')]") quantity_input = product_container.find_element(By.CSS_SELECTOR, "input[title=\'Qtd\']") add_to_cart_button = product_container.find_element(By.CSS_SELECTOR, "button.action.tocart") quantity_input.clear() quantity_input.send_keys(str(quantity)) add_to_cart_button.click() # Esperar a confirmação de adição ao carrinho WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".message-success"))) # 4. Finalizar a compra # Clicar no ícone do carrinho ou no link para o carrinho WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".showcart"))).click() WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "top-cart-btn-checkout"))).click() # Esperar a página de checkout carregar WebDriverWait(driver, 10).until(EC.url_contains("/checkout/")) # Clicar no botão Finalizar Pedido WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.action.primary.checkout"))).click() # Esperar a página de sucesso WebDriverWait(driver, 10).until(EC.url_contains("/checkout/onepage/success/")) print("Compra finalizada com sucesso!") except Exception as e: import traceback print(f"Ocorreu um erro: {e}") traceback.print_exc() finally: driver.quit() # Exemplo de uso: automate_oakberry_purchase("oakjoaopessoa@gmail.com", "o@kb3rry2o22", "ACAI OAKBERRY BALDE 7KG", 5)
💾 保存文件
← 返回文件管理器