# -*- coding: utf-8 -*- """지오영 주문 확정 API 테스트""" import requests from bs4 import BeautifulSoup import asyncio from playwright.async_api import async_playwright import time async def get_cookies(): async with async_playwright() as p: browser = await p.chromium.launch(headless=True) page = await browser.new_page() await page.goto('https://gwn.geoweb.kr/Member/Login') await page.fill('input[type="text"]', '7390') await page.fill('input[type="password"]', 'trajet6640') await page.click('button, input[type="submit"]') await page.wait_for_load_state('networkidle') cookies = await page.context.cookies() await browser.close() return cookies def test(): print("="*60) print("지오영 전체 주문 플로우 테스트") print("="*60) # 1. 로그인 print("\n1. 로그인...") start = time.time() cookies = asyncio.run(get_cookies()) print(f" 완료: {time.time()-start:.1f}초") session = requests.Session() for c in cookies: session.cookies.set(c['name'], c['value']) session.headers.update({ 'User-Agent': 'Mozilla/5.0', 'X-Requested-With': 'XMLHttpRequest' }) # 2. 검색 → productCode 획득 print("\n2. 제품 검색...") start = time.time() search_resp = session.post('https://gwn.geoweb.kr/Home/PartialSearchProduct', data={ 'srchText': '661700390' }) soup = BeautifulSoup(search_resp.text, 'html.parser') product_div = soup.find('div', class_='div-product-detail') lis = product_div.find_all('li') if product_div else [] product_code = lis[0].get_text(strip=True) if lis else None print(f" productCode: {product_code}") print(f" 완료: {time.time()-start:.1f}초") # 3. 장바구니 추가 print("\n3. 장바구니 추가...") start = time.time() cart_resp = session.post('https://gwn.geoweb.kr/Home/DataCart/add', data={ 'productCode': product_code, 'moveCode': '', 'orderQty': 1 }) result = cart_resp.json() print(f" result: {result.get('result')}") print(f" 완료: {time.time()-start:.1f}초") if result.get('result') != 1: print(f" ❌ 장바구니 추가 실패: {result.get('msg')}") return # 4. 주문 확정 (실제 주문!) - 테스트이므로 실행 안함 print("\n4. 주문 확정 API 테스트...") print(" ⚠️ 실제 주문이 들어가므로 테스트 중지!") print(" API: POST /Home/DataOrder") print(" params: { p_desc: '메모' }") # 실제 주문 코드 (주석 처리) # order_resp = session.post('https://gwn.geoweb.kr/Home/DataOrder', data={ # 'p_desc': '테스트 주문' # }) # print(f" 응답: {order_resp.text[:200]}") # 5. 장바구니 비우기 (테스트용) print("\n5. 장바구니 비우기...") # 장바구니에서 삭제 clear_resp = session.post('https://gwn.geoweb.kr/Home/DataCart/delAll') print(f" 상태: {clear_resp.status_code}") print("\n" + "="*60) print("✅ 전체 API 플로우 확인 완료!") print("") print("1. 검색: POST /Home/PartialSearchProduct") print("2. 장바구니: POST /Home/DataCart/add") print("3. 주문확정: POST /Home/DataOrder") print("="*60) if __name__ == "__main__": test()