AutoPercenty3/config.ini

184 lines
14 KiB
INI

[PriceLocators]
return_fee_input_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[4]/div/div[1]/div[3]/div/div/div/div[1]/div[2]/input'
first_delv_fee_input_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[4]/div/div[1]/div[4]/div/div[2]/div/div[1]/div[2]/input'
exchange_fee_input_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[4]/div/div[1]/div[5]/div/div/div/div[1]/div[2]/input'
plus_margin_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[8]/div/div/div[3]/div/div/div/div[1]/div[2]/input'
oversea_shipping_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div/div/div[2]/div/div[1]/div[10]/div/div/div/div[1]/div[2]/input'
option_count_text_locator = 'div#productMainContentContainerId th:nth-child(2) > div > span'
product_cost_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[3]/div/div/div/div[2]/input'
standard_selling_price_locator = '//*[@id='productMainContentContainerId']/div/div[2]/div/div/div[5]/div[1]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[4]/div/div/div[1]/div/div[2]/input'
product_cost_for_single_locator = '//*[@id="productMainContentContainerId"]/div/div[2]/div/div/div[2]/div[1]/div/div/div/div/div[2]/table/tbody/tr[2]/td[2]/div/div/div/div[2]/input'
standard_selling_price_for_single_locator = '//*[@id="productMainContentContainerId"]/div/div[2]/div/div/div[2]/div[1]/div/div/div/div/div[2]/table/tbody/tr[2]/td[3]/div/div/div[1]/div/div[2]/input'
ordering_by_name_locator = 'button:has-text("이름순 정렬")'
ordering_by_option_locator = 'button:has-text("옵션탭 순서 정렬")'
[OptionLocators]
# 옵션 관련 선택자
option_excluded_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[2]/div/div[3]'
option_input_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[3]/div[2]/div[1]/span/input'
single_option_locator = '//div[@id="productMainContentContainerId"]//label[contains(@class, 'ant-radio-button-wrapper-checked') and contains(., '단일 상품등록')]'
option_product_locator = '//div[@id="productMainContentContainerId"]//label[contains(@class, 'ant-radio-button-wrapper-checked') and contains(., '옵션 상품등록')]'
total_options_selector = '#productMainContentContainerId label.ant-checkbox-wrapper'
; is_all_option_checked_selector = '#productMainContentContainerId .ant-checkbox-indeterminate'
is_all_option_checked_selector = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[4]/div[2]/div[1]/label/span[1]/input'
; ai_option_btn_selector = 'div#productMainContentContainerId div:nth-child(2) > div > div > div.ant-row.ant-row-middle.css-1li46mu > div:nth-child(4) > button[type=\"button\"]'
ai_option_btn_selector = 'button:has-text("AI 옵션명 다듬기")'
original_name_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(3) > span'
edit_field_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > span > input'
checkbox_selector_template = '#productMainContentContainerId li:nth-child({index}) input[type="checkbox"]'
; image_selector_template = '#productMainContentContainerId li:nth-child({index}) img.sc-gbvfcU.ezktkd'
image_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(2) > div > img'
; price_selector_template = '#productMainContentContainerId li:nth-child({index}) sup'
price_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[3]/div[1]/div[2]/button/span/sup'
# 옵션 상자
; option_box_selector = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc'
option_box_selector = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[2]/div'
; excluded_option_marker = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc:nth-child({index}) > .sc-dfauwV.bXsMpn'
excluded_option_marker = '.bXsMpn.sc-dfauwV'
; delete_button_selector = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc:nth-child({index}) span:has-text("삭제")'
; delete_button_selector = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc:nth-child({index}) div.sc-igZIGL.kQDmyq'
; delete_button_selector = '.kQDmyq.sc-igZIGL'
delete_button_selector_template = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[2]/div/div[2]/div[1]/div/span'
fallback1_delete_button_selector_template = 'div#productMainContentContainerId li:nth-child({index}) > div > div:nth-child(1) > div > div:nth-child(2) > div > div.ant-row.ant-row-no-wrap.ant-row-space-between.ant-row-middle.css-1li46mu > div:nth-child(1) > div > span'
; confirm_delete_button_selector = '.ant-modal.css-1li46mu.ant-modal-confirm.ant-modal-confirm-confirm button:has-text("삭제")'
confirm_delete_button_selector = '/html/body/div[8]/div/div[2]/div/div[2]/div/div/div/div[2]/button[2]'
add_button_selector2 = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc:nth-child({index}) > .sc-dRGYJT.hmQUGb'
add_button_selector = '//*[@id="productMainContentContainerId"]/div[1]/div[2]/div/div/div[2]/div/div[1]/div/div/div[2]/div/div/div[5]/div[1]/div/div/ul/li[{index}]/div/div[1]/div/div[2]/div/div/img'
; add_button_selector = 'div.hmQUGb.sc-dRGYJT'
; add_button_selector = 'div#productMainContentContainerId div.lesrZh.sc-bYHUQc:nth-child({index}) > .sc-krITIZ.ckztYT'
; file_upload_button_selector = '.ant-modal-content button:has-text("클릭 or 드레그로 파일 업로드")'
file_upload_button_selector = 'span.ant-upload-btn input[type="file"]'
; confirm_upload_button_selector = '.ant-modal-content button:has-text("이미지 삽입")'
confirm_upload_button_selector = 'button.ant-btn-primary span:text('이미지 삽입')'
low_order_button_locator = 'button:has-text("가격 낮은 순")'
AtoZ_button_locator = 'button:has-text("A-Z")'
one_to_nine_button_locator = 'button:has-text("1-99")'
[DetailLocators]
product_detail_input_locator = '//*[@id='detailMainContainerId']/div/div/div[{i}]/textarea'
product_image_locator = '//*[@id='detailMainContainerId']/div/div/div[{i}]/img'
[DetailPageTextTemplates]
leading_text_1 = '---'
leading_text_2 = '# 안녕하세요 혜리수샵입니다.'
leading_text_3 = '### 마켓정책으로 인해 모든 옵션이 노출되지 않을수도 있습니다.'
leading_text_4 = '### 반드시 옵션사진과 옵션이름을 확인하시고 구매하시기 바랍니다.'
leading_text_5 = '---'
# 필요한 만큼 추가 가능
[TitleLocators]
# 상품명 관련 선택자
product_name_input_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div[5]/div[1]/span/input'
product_name_input_css_path = 'div#productMainContentContainerId div:nth-child(5) > div:nth-child(1) > span > input'
# 상품명 추천단어 입력칸 선택자
product_name_suggestion_input_locator = '//*[@id="productMainContentContainerId"]/div/div[1]/div[2]/div[2]/div/span/span/span[1]/input'
product_name_suggestion_input_css_path = 'div#productMainContentContainerId div:nth-child(2) > div:nth-child(2) > div > span > span > span.ant-input-affix-wrapper.css-1li46mu.ant-input-outlined > input'
# 상품명 추천단어 입력 검색 버튼 선택자
product_name_search_button_locator = '//*[@id="productMainContentContainerId"]/div/div[1]/div[2]/div[2]/div/span/span/span[2]/button'
product_name_search_button_css_path = 'div#productMainContentContainerId div:nth-child(2) > div:nth-child(2) > div > span > span > span.ant-input-group-addon > button[type="button"]'
# 원본 상품명 선택자
original_product_name_locator = '//*[@id="productMainContentContainerId"]/div/div[1]/div[6]/div[1]/div/span'
original_product_name_css_path = 'div#productMainContentContainerId div.sc-aNeao.tNLFa > div.ant-flex.css-1li46mu.ant-flex-align-stretch.ant-flex-vertical > div:nth-child(1) > div > span'
# 상품명의 경고단어 삭제 버튼 선택자
product_name_warning_delete_button_locator = '//*[@id="productMainContentContainerId"]/div/div[1]/div[6]/div[3]/div[2]/div/button'
product_name_warning_delete_button_css_path = 'div#productMainContentContainerId div:nth-child(2) > div > button[type="button"]'
# 카테고리 관련 선택자
category_suggestion_button_locator = '//*[@id='productMainContentContainerId']/div/div[1]/div[5]/div[2]/button'
category_suggestion_button_css_path = 'div#productMainContentContainerId div:nth-child(2) > button[type="button"]'
# 카테고리 선택자 - 인증 여부에 따른 분기
category_main_selector_with_cp = 'div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=1'
category_main_selector_with_ss = 'div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=2'
category_main_selector_with_esm = 'div#productMainContentContainerId div.ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow >> nth=3'
; category_main_selector_with_cp = '#productMainContentContainerId .ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow:nth-of-type(1)'
; category_main_selector_with_ss = '#productMainContentContainerId .ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow:nth-of-type(2)'
; category_main_selector_with_esm = '#productMainContentContainerId .ant-select.ant-select-outlined.css-1li46mu.ant-select-single.ant-select-show-arrow:nth-of-type(3)'
category_text_locator = 'div.ant-col.css-1li46mu:nth-child(1)'
category_text_locator_certified = 'div.ant-col.css-1li46mu:nth-child(2)'
; category_text_without_certification_locator = 'div.ant-col.css-1li46mu:nth-child(1)'
[BrowserControl]
# 크롬 창 이름
chrome_window_name = '퍼센티 - 셀러들을 위한 AI 구매대행 솔루션 - Chrome'
# 관리자 로그인 관련 선택자
login_email_locator = 'input[placeholder="이메일 주소 입력"]'
login_password_locator = 'input[placeholder="영문/숫자/특수문자의 조합 (6~15자리)"]'
login_button_locator = 'button:has-text("로그인 하기")'
# 직원 로그인 관련 선택자
staff_id_locator = 'input[placeholder="직원 아이디 입력"]'
staff_login_button_locator = 'button:has-text("직원 로그인 하기")'
admin_toggle_locator = 'button[role="switch"]'
# 광고 다이얼로그 관련 선택자
; close_ad_dialog_locator = 'div.ant-modal-wrap.ant-modal-centered'
close_ad_dialog_locator = 'div[role="dialog"]'
close_ad_button_locator = 'div.ant-modal-footer > div > div > button[type='button'].ant-btn.css-1li46mu.ant-btn-default'
# 상품 관련 선택자
; product_name_template_xpath = '/html/body/div[1]/div/div/div/div/main/div/div[2]/div[2]/div[3]/div/div/ul/div[{index}]/div/li/div/div/div[2]/div/div/div[1]/div[1]/span[2]'
; product_list_locator = 'div#root div.jrsOcn.sc-jBeBSR'
product_parent_locator = 'div#root .sc-iEXKAA.fmZMIG'
product_name_inner_locator = 'div#root .sc-ktPPKK.ezbvYT:nth-child(1) span'
product_price_inner_locator = 'div#root .sc-ktPPKK.ezbvYT:nth-child(5) span'
product_image_inner_locator = 'div#root .sc-kzqdkY.hSRRnW'
product_name_for_ed_template = '//*[@id="root"]/div/div/div/div/main/div/div[2]/div[3]/div[2]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[2]/div/div/div/div[2]/div[2]/span'
product_price_for_ed_template = '//*[@id="root"]/div/div/div/div/main/div/div[2]/div[3]/div[2]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[2]/div/div/div/div[2]/div[2]/div[1]/div[2]/span[2]'
product_image_for_ed_template = '//*[@id="root"]/div/div/div/div/main/div/div[2]/div[3]/div[2]/div/div/div/div/div[2]/table/tbody/tr[{index}]/td[2]/div/div/div/div[1]/span/div/div[1]/img'
# 상품 편집 및 페이지 이동 관련 선택자
; product_edit_button = 'button:has-text("세부사항 수정 및 업로드")'
product_edit_button_template = '//button[span[text()="세부사항 수정 및 업로드"]]'
next_page_button_template = 'li.ant-pagination-item[title="{page_number}"]'
new_product_page_locator = 'span.ant-menu-title-content:has-text("신규 상품 등록")'
registered_product_page_locator = 'span.ant-menu-title-content:has-text("등록 상품 관리")'
current_page_locator = 'li.ant-pagination-item.ant-pagination-item-active'
; total_product_count_locator = '#root > div > div > div > div > main > div > div.sc-ezreuY.kYrYVh > div.sc-dChVcU.cRrUlt > div.sc-izQBue.dxiUJm > div > div:nth-child(1) > label > span:nth-child(2)'
total_product_count_locator = '//*[@id="root"]/div/div/div/div/main/div/div[2]/div[2]/div[2]/div/div[1]/label/span[2]'
total_product_count_for_registed_locator = '//*[@id="root"]/div/div/div/div/main/div/div[2]/div[3]/div[2]/div/div/div/div/div[1]/table/thead/tr/th[2]/div/span'
; total_product_count_for_registed_locator = 'div#root label > span:nth-child(2)'
# 편집페이지 관련 선택자
title_tab_locator = 'div.ant-tabs-tab:has-text("상품명 / 카테고리")'
option_tab_locator = 'div.ant-tabs-tab:has-text("옵션")'
price_tab_locator = 'div.ant-tabs-tab:has-text("가격")'
tag_tab_locator = 'div.ant-tabs-tab:has-text("키워드")'
thumb_tab_locator = 'div.ant-tabs-tab:has-text("썸네일")'
detail_tab_locator = 'div.ant-tabs-tab:has-text("상세페이지")'
upload_tab_locator = 'div.ant-tabs-tab:has-text("업로드")'
# 상세페이지 소스 관련 선택자
source_button_locator = 'button[data-cke-tooltip-text="소스"]'
ck_source_editing_area_locator = 'div.ck-source-editing-area'
# 옵션 입력 필드
option_input_field_locator = 'div#productMainContentContainerId > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div'
# Save
save_button_locator = 'button:has-text("저장하기")'