작성
·
412
0
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.keys import Keys
# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-looging"])
# 브라우저 생성
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# 웹 사이트 열기
driver.maximize_window()
driver.get("https://www.naver.com")
driver.implicitly_wait(10) # 로딩이 끝날 때까지 10초는 기다림
# 쇼핑 메뉴 클릭
driver.find_element(By.CSS_SELECTOR, "#shortcutArea > ul > li:nth-child(4) > a").click()
time.sleep(2)
# 새창을 바라보게 만들기
new_window = driver.window_handles[1]
driver.switch_to.window(new_window)
# 검색창 클릭
search = driver.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs")
search.click()
# 검색어 입력
search.send_keys("아이폰 13")
search.send_keys(Keys.ENTER)
# 브라우저 종료 방지 - 입력 대기
input("로그인 성공 후 프로그램을 종료하려면 엔터 키를 눌러주세요.")
# 브라우저 종료
driver.quit()
안녕하세요.
이번 강의를 참고하여 셀레니움4로 코드를 적용해보았는데
불필요한 라이브러리나 코드을 추가한게 있을까요?..
답변 2
0
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
options = Options() # Options 객체 생성
options.add_experimental_option("detach",True) # 꺼짐 방지
service=Service(executable_path=ChromeDriverManager().install())
driver=webdriver.Chrome(service=service,options=options)
driver.get('https://naver.com')
driver.implicitly_wait(10)
driver.find_element(By.CSS_SELECTOR,'#shortcutArea > ul > li:nth-child(4) > a').click()
time.sleep(10)
# -----------------------------검색창 클릭 시도 1
# wait = WebDriverWait(driver, 30)
# search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#gnb-gnb > div > div > button > span')))
# search.click()
# -----------------------------검색창 클릭 시도 2
# wait = WebDriverWait(driver, 30)
# search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'span._combineHeader_expansion_search_inner_1VxB3')))
# search.click()
# -----------------------------검색창 클릭 시도 3
# search_script = "document.querySelector('#gnb-gnb > div > div > button > span').click();"
# driver.execute_script(search_script)
# -----------------------------검색창 클릭 시도 4
# search_element = driver.find_element(By.CSS_SELECTOR, '#gnb-gnb > div > div > button > span')
# ActionChains(driver).move_to_element(search_element).click().perform()
# -----------------------------검색창 클릭 시도 5
# wait = WebDriverWait(driver, 30) # 최대 30초간 대기합니다.
# try:
# search = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#gnb-gnb > div > div > button > span')))
# except TimeoutException:
# print("요소를 찾을 수 없습니다.")
안녕하세요.
코딩 매우 초보이지만, 강의를 잘 따라 하고 있었는데, 검색어 클릭에서 막혔습니다.
주로 element를 못찾는다거나, timeout 에러가 발생합니다. 현재 네이버 쇼핑메뉴에 들어가면 팝업메뉴가 둥둥 떠있어서 그런것 같기도 합니다. 수동으로 검색어 클릭하면 two touch 해야 클릭 포커스가 잡힙니다. 검색어 클릭하기 위해서 코딩 초보가 자세한 뜻도 모르고 이것 저것 시도한 소스파일입니다.
검색어 클릭을 어떻게 하면 할수 있는지 도움 부탁드립니다.
0
감사합니다~!!