AutoPercenty3/groupTest.py

123 lines
4.7 KiB
Python

from playwright.sync_api import sync_playwright
import sys, os, random
import time
def change_group(selected_group_index: int):
# Playwright 시작 및 브라우저 실행
playwright = sync_playwright().start()
base_path = get_base_dir()
browser_path = os.path.join(base_path, 'browsers', 'chromium-1140', 'chrome-win','chrome.exe')
extension_path = os.path.join(base_path, 'browsers', 'extensions', '1.1.100_0')
user_data_dir = os.path.join(base_path, 'browsers', 'user_data')
# User agent 설정
user_agent = random.choice([
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 12_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 OPR/85.0.0.0",
])
# 브라우저 시작 및 설정
browser = playwright.chromium.launch_persistent_context(
user_data_dir,
headless=False,
permissions=["geolocation", "notifications"],
geolocation={"latitude": 37.5665, "longitude": 126.9780},
locale="ko-KR",
args=[
'--disable-popup-blocking',
f'--disable-extensions-except={extension_path}',
f'--load-extension={extension_path}',
'--start-maximized',
'--window-size=1920,1080'
],
executable_path=browser_path,
user_agent=user_agent
)
# 기본 페이지가 없을 수 있으므로 새로운 페이지 생성
page = browser.new_page()
# 로그인 페이지로 이동 (URL을 실제 로그인 페이지로 변경)
page.goto('https://percenty.co.kr/signin')
# 로그인 수행
admin_toggle = page.locator('button[role="switch"]')
if admin_toggle.get_attribute("aria-checked") == "true":
admin_toggle.click() # 관리자 모드에서 직원 모드로 전환
page.fill('input[placeholder="이메일 주소 입력"]', 'leensoo1nt@gmail.com')
page.fill('input[placeholder="직원 아이디 입력"]', 'uploader')
page.fill('input[placeholder="영문/숫자/특수문자의 조합 (6~15자리)"]', 'uploader')
page.click('button:has-text("직원 로그인 하기")')
page.wait_for_selector('div[role="dialog"]', timeout=3000, state='visible')
close_button = page.query_selector("div.ant-modal-footer > div > div > button[type='button'].ant-btn.css-1li46mu.ant-btn-default")
if close_button:
close_button.click()
# 상품 수정 페이지로 이동
page.wait_for_load_state("networkidle")
page.click('span.ant-menu-title-content:has-text("신규 상품 등록")')
time.sleep(0.5)
page.evaluate("""
const dropdown = document.querySelector('input#rc_select_1');
if (dropdown) {
dropdown.scrollIntoView();
}
""")
print("해당요소 스크롤")
# 그룹 드롭박스 열기
group_dropdown_css = "div.ant-select-selector"
page.wait_for_selector(group_dropdown_css)
print("드롭박스 상위 요소 대기")
# 드롭박스 열기
group_dropdown_click_css = "div.ant-select-selector:nth-child(1)"
page.click(group_dropdown_click_css)
print("드롭박스 클릭")
# 드롭다운 열림 상태 확인
dropdown_openstatus_css = "div.ant-select-dropdown:not(.ant-select-dropdown-hidden)"
page.wait_for_selector(dropdown_openstatus_css)
print("드롭다운 열림 확인")
# 옵션 선택
group_index_css = f"div.ant-select-item.ant-select-item-option:nth-child({selected_group_index + 1})"
page.wait_for_selector(group_index_css)
page.click(group_index_css)
print(f"[{selected_group_index+1}]번 그룹 선택 완료")
# 변경된 그룹 이름 가져오기
selected_group_name_css = "div#root div:nth-child(4) > div > div > span.ant-select-selection-item"
selected_group_name = page.inner_text(selected_group_name_css)
print(f"변경된 그룹 이름: {selected_group_name}")
time.sleep(1)
# 브라우저 닫기
browser.close()
def get_base_dir():
if getattr(sys, 'frozen', False): # 패키징된 경우
base_dir = os.path.dirname(sys.executable)
internal_dir = os.path.join(base_dir, '_internal')
if os.path.exists(internal_dir):
return internal_dir
else:
base_dir = os.path.dirname(os.path.abspath(__file__))
return base_dir
# 실행 예제 (2번째 그룹 선택)
change_group(selected_group_index=2)