Selenium 자동화 코드를 작성하면서 텍스트 입력된 내용을 삭제하는 코드를 자주 쓰게 되는데,
처음 알게된 내용을 공유하려고 한다.
네이버 쇼핑에서 여러 개의 키워드를 검색해서 내용을 가져오는 웹 크롤링을 하다가
아래 코드에서 이슈가 발생했다.
이슈
keywords = ['라면', '바구니', '커피']
for idx, keyword in enumerate(keywords):
input = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="gnb-gnb"]/div[2]/div/div[2]/div/div[2]/form/div[1]/div/input')))
input.send_keys(keyword)
키워드 배열을 돌면서 input 안에 keyword를 넣게 되는데,
이상하게도 이전에 입력된 값이 다음 키워드에도 합쳐져서 입력이 됐다.
예를 들어 '라면'을 검색한 이후에 '바구니'를 검색하면,
'라면바구니' 라고 검색됐다.
입력된 input을 all clear하는 방법은 없을까 구글링을 하다가,
결국 찾아냈다!
해결법
input.send_keys(Keys.LEFT_SHIFT, Keys.HOME, Keys.BACKSPACE)
Shift 키와 Home 키를 사용하여 입력된 텍스트 전체 선택을 하고, Backspace로 삭제하는 개념이다.
send_keys가 아닌 all_clear 이런 메서드라도 있는 줄 알았더만 ..