#가입화면
<https://post.malltail.com/members/regist1>
#외국인 가입
//*[@id="container"]/div[1]/div[1]/ul/li[2]/a
#아이디 영역 클릭
//*[@id="MemberUserId"]
#중복확인
//*[@id="container"]/div[1]/div[2]/div[1]/ul/li[1]/div[2]/div/button
#alert accept 중복확인 클릭
alert = wait.until(EC.alert_is_present())
alert.accept()
#insert PW
//*[@id="MemberPassword"]
tab
같은 비번
tab
한글이름
tab
영어이름
#이메일
//*[@id="MemberEmail"]
#전체동의.click
//*[@id="container"]/div[1]/div[2]/div[3]/div/dl/dt/div/label
#Sign up
//*[@id="container"]/div[2]/a[2]
#alert accept 가입축하
alert = wait.until(EC.alert_is_present())
alert.accept()
사람이름은 뭐로할까 하다가 그냥 한국에서 가장 많은 이름 사이트에서 딱 100개 리스트로 제공되길래 그걸 복붙해옴
엑셀에서 해당 이름 앞에 ‘김’ 을 일괄적으로 붙여서 그대로 파파고에 이름을 단순하게 번역 후 그대로 데이터베이스에 저장
7탄 엑셀 "엑셀 값 앞 또는 뒤에 특정 문자추가" 하기
7탄 엑셀 "엑셀 값 앞 또는 뒤에 특정 문자추가" 하기
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.alert import Alert
import os
import openpyxl as op
#!####################엑셀 데이터 임포트###################
PATH_EXCEL = "C:/SBU/Auto_Malltail/SRC/"
FILE_EXCLEL_A = "Userdata.xlsx"
FILE_EXCLEL_D = "UrlNumberData_Accounts1.xlsx"
#~계정원본 임포트
WB_A = op.load_workbook(PATH_EXCEL + FILE_EXCLEL_A)
WS_A = WB_A.active
WS_A_MAX = WS_A.max_row
#~계정 데이터베이스에 저장
WB_D= op.load_workbook(PATH_EXCEL + FILE_EXCLEL_D)
WS_D = WB_D.active
WS_D_MAX = WS_D.max_row
print("열린 시트 : " , WB_A.sheetnames,WB_D.sheetnames)
#!####################크롬 프로필 리스트화###################
#레노버 폴더 : C:\\Users\\a_004\\AppData\\Local\\Google\\Chrome\\User Data
#레이저 폴더 : C:\\Users\\thqud\\AppData\\Local\\Google\\Chrome\\User Data
directory_chrome = r"C:\\Users\\a_004\\AppData\\Local\\Google\\Chrome\\User Data" # 크롬 계정데이터 모여있는 폴더 chrome://version
USING_CHROME_PROFILE = False
NUM_CHROME_PROFILE = 1
# 해당 문자가 포함된 폴더만 리스트화 시키겠다 (프로필 뒤에 공백 필수)
include_text = 'Profile '
# 디렉토리명 필터링
DIR_PROFILE_LIST = (
[d for d in os.listdir(directory_chrome)
if os.path.isdir(os.path.join(directory_chrome, d)) and include_text in d]
)
#!####################셀레니움 기본 세팅#####################
options = Options()
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
options.add_argument(f"user-data-dir={directory_chrome}")
# 필요할 시 크롬 기타 프로필 (기본 프로필로 이용할거면 USING_CHROME_PROFILE 변수를 False 처리)
if USING_CHROME_PROFILE == True:
options.add_argument("--profile-directory=" + DIR_PROFILE_LIST[NUM_CHROME_PROFILE])
else:
pass
options.add_experimental_option("detach", True) # 화면이 꺼지지 않고 유지
options.add_argument("--start-maximized") # 최대 크기로 시작
#service = Service(ChromeDriverManager().install()) # 웹드라이버 설치
driver = webdriver.Chrome(ChromeDriverManager().install())
#driver = webdriver.Chrome(service=service, options=options) # 웹드라이버 불러오기
action = ActionChains(driver)
wait = WebDriverWait(driver, 3)
for i in range(WS_A_MAX):
#~계정 순차적으로 불러오기
ID = WS_A.cell(row = 1+i, column = 1).value #!이메일에서 골뱅이 빼주세요
EMAIL = WS_A.cell(row = 1+i, column = 2).value
PW = WS_A.cell(row = 1, column = 7).value
NAME_K = WS_A.cell(row = 1+i, column = 3).value
NAME_E = WS_A.cell(row = 1+i, column = 4).value
print((i+1),ID,NAME_K,NAME_E)
driver.get("<https://post.malltail.com/members/regist1>")
#*아이디 입력
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="container"]/div[1]/div[1]/ul/li[2]/a'))) #외국인가입 클릭 대기
driver.find_element(By.XPATH, '//*[@id="container"]/div[1]/div[1]/ul/li[2]/a').click() #외국인 가입 클릭
driver.find_element(By.XPATH, '//*[@id="MemberUserId"]').click() #아이디 클릭
driver.find_element(By.XPATH, '//*[@id="MemberUserId"]').send_keys(ID)
#*alert accept 중복확인 클릭
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="container"]/div[1]/div[2]/div[1]/ul/li[1]/div[2]/div/button'))) #아이디 중복확인 대기
driver.find_element(By.XPATH, '//*[@id="container"]/div[1]/div[2]/div[1]/ul/li[1]/div[2]/div/button').click() #아이디 중복확인
alert = wait.until(EC.alert_is_present())
alert.accept()
#*비밀번호 입력
driver.find_element(By.XPATH, '//*[@id="MemberPassword"]').click() #비밀번호 클릭
driver.find_element(By.XPATH, '//*[@id="MemberPassword"]').send_keys(PW)
#*비밀번호 재확인
driver.find_element(By.XPATH, '//*[@id="MemberRePassword"]').click() #비밀번호 클릭
driver.find_element(By.XPATH, '//*[@id="MemberRePassword"]').send_keys(PW)
#*이름 입력
driver.find_element(By.XPATH, '//*[@id="MemberName"]').click()
driver.find_element(By.XPATH, '//*[@id="MemberName"]').send_keys(NAME_K)
driver.find_element(By.XPATH, '//*[@id="MemberEngName"]').click()
driver.find_element(By.XPATH, '//*[@id="MemberEngName"]').send_keys(NAME_E)
#*이메일 입력
driver.find_element(By.XPATH, '//*[@id="MemberEmail"]').send_keys(EMAIL) #아이디가 곧 이메일
driver.find_element(By.XPATH, '//*[@id="container"]/div[1]/div[2]/div[3]/div/dl/dt/div/label').click()
#*가입완료버튼
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="container"]/div[2]/a[2]'))) #가입완료버튼대기
driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/a[2]').click() #가입완료
alert = wait.until(EC.alert_is_present())
alert.accept()