import time from pywinauto import Application, findwindows, keyboard import os def start_whale_in_secret_mode(): # 실행 경로 설정 whale_exe_path = os.path.join(os.getcwd(), "browsers", "whale", "whale.exe") user_data_dir = os.path.join(os.getcwd(), "browsers", "whale", "user_data") cache_dir = os.path.join(os.getcwd(), "browsers", "whale", "cache") # # 유저 데이터 및 캐시 폴더 비우기 # clear_directory(user_data_dir) # clear_directory(cache_dir) # 웨일을 시크릿 모드로 시작 app = Application(backend="uia").start( f'"{whale_exe_path}" --incognito --auto-open-devtools-for-tabs --user-data-dir="{user_data_dir}" --disk-cache-dir="{cache_dir}"' ) time.sleep(1) # 웨일이 완전히 로드될 때까지 대기 return app def find_whale_window(app): # '새 시크릿 탭 - Whale' 창을 찾기 위해 PID 검색 whale_pid = None windows = findwindows.find_elements() for window in windows: if window.name == '새 시크릿 탭 - Whale': whale_pid = window.process_id break # PID가 있으면 해당 창을 연결 if whale_pid: app = Application(backend="uia").connect(process=whale_pid) whale_window = app.top_window() whale_window.set_focus() return whale_window else: print("'새 시크릿 탭 - Whale' 창을 찾을 수 없습니다.") return None def navigate_to_url(whale_window, url): # 주소창을 찾고 URL을 입력 후 이동 try: address_bar = whale_window.child_window(title="주소창 및 검색창", control_type="Edit") address_bar.click_input() address_bar.type_keys(f"{url}{{ENTER}}", with_spaces=True) time.sleep(1) # 페이지 로딩 대기 except Exception as e: print(f"주소창에 접근할 수 없습니다: {e}") def right_click_on_image_and_inspect(whale_window): try: # 이미지 요소를 찾아서 우클릭 image = whale_window.child_window(title="누락된 이미지 설명을 확인하려면 컨텍스트 메뉴를 여세요.", control_type="Image") if image.exists(): image.right_click_input() print("이미지 요소에서 우클릭을 수행했습니다.") else: print("이미지 요소를 찾을 수 없습니다.") return # “이미지 번역” 메뉴 항목 클릭 translate_menu_item = whale_window.child_window(title="이미지 번역 (R)", control_type="MenuItem") translate_menu_item.click_input() print("이미지 번역 명령이 실행되었습니다.") # 번역이 실행된 후 대기 time.sleep(2) # auto_id="elements-content" 요소 클릭 elements_content = whale_window.child_window(auto_id="elements-content", control_type="Group") if elements_content.exists(): elements_content.click_input() print("elements-content 요소를 클릭했습니다.") # Ctrl+F로 검색 창 활성화 keyboard.send_keys("^f") time.sleep(1) # 검색 창이 열릴 시간을 대기 # search-input-field에 'data:image' 입력 search_input = whale_window.child_window(auto_id="search-input-field", control_type="Edit") if search_input.exists(): search_input.click_input() search_input.type_keys("data:image", with_spaces=True) print("search-input-field 요소에 'data:image'를 입력했습니다.") time.sleep(1) # 검색 결과가 로드될 시간을 대기 # whale_window.print_control_identifiers() # time.sleep(1) # 검색 결과가 로드될 시?간을 대기 # data:image로 시작하는 Hyperlink 요소 검색 및 출력 try: # 지정한 기준으로 모든 매칭 요소 가져오기 image_elements = whale_window.children(control_type="TreeItem") # title이 '^= 2: # 두 번째 요소 선택 second_image_element = matching_elements[1] # 두 번째 요소에서 우클릭 수행 second_image_element.right_click_input() print("두 번째 이미지 요소에서 우클릭을 수행했습니다.") # 두 번째 요소의 상세 정보 출력 print("\n=== 두 번째 이미지 요소의 상세 정보 ===") second_image_element.print_control_identifiers() else: print("해당 조건에 맞는 두 번째 요소를 찾을 수 없습니다.") except Exception as e: print(f"이미지 요소에서 우클릭 또는 요소 찾기 중 오류 발생: {e}") else: print("search-input-field 요소를 찾을 수 없습니다.") else: print("elements-content 요소를 찾을 수 없습니다.") except Exception as e: print(f"이미지 요소에서 우클릭 또는 요소 찾기 중 오류 발생: {e}") # 실행 순서 if __name__ == "__main__": app = start_whale_in_secret_mode() whale_window = find_whale_window(app) if whale_window: navigate_to_url(whale_window, "https://file.percenty.co.kr/public/652bed8e865b1f32ea62bf1f/products/672868c99acd550673510816/0da24e66-a33b-483d-b8a2-bd5b909d8aff.jpg") right_click_on_image_and_inspect(whale_window)