python/자동화
[Python] 웹 자동화 기초 - 엘레먼트(클릭, 텍스트, 프레임 이동)
sillon
2022. 9. 29. 11:08
728x90
반응형
엘레먼트에 관하여
우리는 웹브라우저에서 로그인도 하고 버튼도 클릭하고 검색창에 텍스트를 입력하기도 한다. 이렇게 브라우저 상에서 보이는 버튼, 검색창, 사진, 테이블, 동영상 등등 이 모든 것들을 엘레먼트(element, 요소) 라고 부른다. 셀레니움은 우리가 브라우저에서 특정 요소를 클릭하고 텍스트를 입력하고 사진등을 받아오고 텍스트를 가져오는 등등 어떠한 위치에 있는 무언가를 부를 때 엘레먼트라는 개념으로 접근한다. 다양한 방법으로 엘레먼트로 접근할 수 있는데 대부분 xpath 를 사용한다.
엘레먼트 접근하는 방법
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div[3]/form/fieldset/button/span[2]') #xpath 로 접근
driver.find_element_by_class_name('ico_search_submit') #class 속성으로 접근
driver.find_element_by_id('ke_kbd_btn') #id 속성으로 접근
driver.find_element_by_link_text('회원가입') #링크가 달려 있는 텍스트로 접근
driver.find_element_by_css_selector('#account > div > a') #css 셀렉터로 접근
driver.find_element_by_name('join') #name 속성으로 접근
driver.find_element_by_partial_link_text('가입') #링크가 달려 있는 엘레먼트에 텍스트 일부만 적어서 해당 엘레먼트에 접근
driver.find_element_by_tag_name('input') #태그 이름으로 접근
driver.find_element_by_tag_name('input').find_element_by_tag_name('a') #input 태그 하위태그인 a 태그에 접근
driver.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div[3]/form/fieldset/button/span[2]').find_element_by_name('join') #xpath 로 접근한 엘레먼트의 안에 join 이라는 속성을 가진 tag 엘레먼트에 접근
엘레먼트 클릭
driver.find_element_by_id('ke_kbd_btn').click()
텍스트 입력
driver.find_element_by_id('ke_awd2_btn').send_keys('텍스트 입력')
텍스트 삭제
driver.find_element_by_id('ke_awd2_btn').clear()
단축키 입력
from selenium.webdriver.common.keys import Keys
# 컨트롤+V
driver.find_element_by_id('ke_kbd_btn').send_keys(Keys.CONTROL + 'v')
# 다른 방법
from selenium.webdriver import ActionChains
ActionChains(driver).key_down(Keys.CONTROL).send_keys('V').key_up(Keys.CONTROL).perform()
#위에서 driver 대신 엘리먼트를 입력해도 좋음.
Frame 이동
#이동할 프레임 엘리먼트 지정
element = driver.find_element_by_tag_name('iframe')
#프레임 이동
driver.switch_to.frame(element)
#프레임에서 빠져나오기
driver.switch_to.default_content()
reference
728x90
반응형