• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

네이버 메일 자동화 실습 문의

24.04.12 01:07 작성 조회수 72

0

 안녕하세요 네이버 메일 자동화 코드를 실행하면 메일 쓰기 버튼을 계속 찾지 못하고 있어 어떻게 수정하면 될지 문의드립니다.

메일함 이동까지는 정상적으로 되고 있으나 메일 쓰기 버튼만 찾지 못하고 있습니다.

 

코드는 다음과 같습니다.

from selenium.webdriver import ChromeOptions
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
import pyperclip
import pyautogui
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=options)

driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/')
driver.maximize_window() # 화면 최대화

# 아이디 입력창
id = driver.find_element(By.CSS_SELECTOR, '#id')
id.click()
pyperclip.copy('eooe5173')
pyautogui.hotkey('ctrl', 'v')
time.sleep(2)

# 비밀번호 입력창
passward = driver.find_element(By.CSS_SELECTOR, '#pw')
passward.click()
pyperclip.copy('ssw471395~')
pyautogui.hotkey('ctrl', 'v')
time.sleep(2)

# 로그인 버튼
driver.find_element(By.CSS_SELECTOR, '#log\.login').click()
time.sleep(5)

# 메일함으로 이동
mailbox = driver.find_element(By.CSS_SELECTOR,'#shortcutArea > ul > li:nth-child(1) > a').click()
time.sleep(5)

# 내게 쓰기 버튼
writeme_button =driver.find_element(By.CSS_SELECTOR, '#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write').click()

# 메일 제목 입력창 및 입력
mailname = driver.find_element(By.CSS_SELECTOR, '#subject_title').click()
pyperclip.copy('안녕하세요')
pyautogui.hotkey('ctrl', 'v')
time.sleep(5)

# 메일 내용 입력창 및 입력
mailinfo = driver.find_element(By.CSS_SELECTOR, '#body > div > div.workseditor-content').click()
pyperclip.copy('네이버 메일 자동화입니다.')
pyautogui.hotkey('ctrl', 'v')
time.sleep(5)

# 메일 저장
mailsave = driver.find_element(By.CSS_SELECTOR, '#content > div.mail_toolbar.type_write > div:nth-child(1) > div > button.button_write_task').click()
time.sleep(5)

에러는 동일하게 다음과 같이 노출되고 있습니다.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write"}

(Session info: chrome=123.0.6312.123)

Stacktrace:

GetHandleVerifier [0x00D14CA3+225091]

(No symbol) [0x00C44DF1]

(No symbol) [0x00AE9A7A]

(No symbol) [0x00B2175B]

(No symbol) [0x00B2188B]

(No symbol) [0x00B57882]

(No symbol) [0x00B3F5A4]

(No symbol) [0x00B55CB0]

(No symbol) [0x00B3F2F6]

(No symbol) [0x00B179B9]

(No symbol) [0x00B1879D]

sqlite3_dbdata_init [0x01189A43+4064547]

sqlite3_dbdata_init [0x0119104A+4094762]

sqlite3_dbdata_init [0x0118B948+4072488]

sqlite3_dbdata_init [0x00E8C9A9+930953]

(No symbol) [0x00C507C4]

(No symbol) [0x00C4ACE8]

(No symbol) [0x00C4AE11]

(No symbol) [0x00C3CA80]

BaseThreadInitThunk [0x764EFCC9+25]

RtlGetAppContainerNamedObjectPath [0x77DE7C5E+286]

RtlGetAppContainerNamedObjectPath [0x77DE7C2E+238]

답변 2

·

답변을 작성해보세요.

1

최레기님의 프로필

최레기

질문자

2024.04.14

driver.switch_to.window(driver.window_handles[-1])

해당 코드 추가로 정상 작동 확인했습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.12

안녕하세요, 인프런 AI 인턴입니다.

최레기님의 네이버 메일 자동화와 관련하여 ‘메일 쓰기 버튼을 계속 찾지 못하고 있는 문제’에 대한 해결 방안을 제공해드리겠습니다.

이와 유사한 상황에 대한 해결책으로, 네이버 화면 변경으로 인해 새 탭에서 메일 창이 열리게 되어 기존 탭에서 요소를 찾지 못하는 문제와 관련된 포스트가 있습니다. 이 경우, 새로운 탭으로의 제어권 이동이 필요합니다. 새 탭에서 생성되는 네이버 메일에 대하여 파이썬 selenium을 사용하여 제어하는 창을 활성화 탭으로 옮기는 방법으로 아래와 같은 코드를 사용하실 수 있습니다:

driver.switch_to.window(driver.window_handles[-1])

위 코드를 메일함으로 이동하는 부분 이후에 추가함으로써, 새 탭에서의 “메일 쓰기” 버튼을 찾을 수 있게 해줍니다.

네이버 메일 자동화, 메일 창이 새탭에 생성에서는 유사한 문제에 대해 언급되어 있으니 해당 내용을 참조해보시는 것이 좋을 듯 합니다.

또한, “내게 쓰기 버튼”을 찾지 못하는 문제는 대상 웹 페이지의 요소가 변경되었거나, 페이지의 로딩 시간에 따라 해당 요소가 정상적으로 불러와지지 않았을 수 있습니다. 따라서 실제 화면에서 요소의 셀렉터가 변경되었는지 확인해 보시고, WebDriverWait을 활용해 특정 요소가 나타날 때까지 기다리는 로직을 추가하는 것도 하나의 해결책이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.