from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service('C:/webdriver/chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get("https://naver.com") # 네이버로 이동
elem = browser.find_element(By.LINK_TEXT, "카페") # '카페'라는 글자로 element 찾기
elem.get_attribute("href") # attribute 정보 가져오기
elem.click() # element를 클릭
browser.back() # 뒤로 가기
browser.forward() # 앞으로 가기
browser.back()
browser.refresh() # 새로 고침
elem = browser.find_element(By.ID, "query") # 검색창 id가 query므로 id로 찾는다.
elem.send_keys("텍스트") # 검색창에 "텍스트"라는 글자를 입력
elem.send_keys(Keys.ENTER) # 엔터를 입력
elem = browser.find_element(By.TAG_NAME, "a") # a 태그에 해당하는 첫 번째 element를 가져옴
elems = browser.find_elements(By.TAG_NAME, "a") # a 태그에 해당하는 element를 전부 가져옴
browser.get("https://daum.net")
elem = browser.find_element(By.NAME, "q") # 다음의 검색창 name은 q임
elem.send_keys("텍스트")
elem.clear() # element에 입력되어 있는 텍스트를 지워준다.
elem.send_keys("텍스트")
elem = browser.find_element(By.XPATH, '//*[@id="daumSearch"]/fieldset/div/div/button[2]') # xpath로 element 가져옴
elem.click()
browser.save_screenshot("daum.png") # 스크린샷
browser.page_source # 브라우저의 html 소스
browser.close() # 현재 탭만 닫기
browser.quit() # 브라우저 전체 종료
<html>
<body>
<iframe id="1">
<html>
<body>
<div...>
</body>
</html>
</iframe>
<iframe id="2">
<html>
<body>
<div..>
</body>
</html>
</iframe>
</body>
<html>
간단한 위와 같이 iframe을 사용한 html 구조이다.
iframe 내부의 element에 접근하려면 해당 iframe으로 전환해야 접근할 수 있다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
s = Service('C:/webdriver/chromedriver.exe')
browser = webdriver.Chrome(service=s)
browser.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_radio')
browser.switch_to.frame('iframeResult') # 프레임 전환
elem = browser.find_element(By.XPATH, '//*[@id="age1"]')
elem.click()
browser.switch_to.default_content() # 상위로 빠져 나옴
time.sleep(3)
browser.quit()
iframeResult는 iframe의 id이다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
s = Service('C:/webdriver/chromedriver.exe')
browser = webdriver.Chrome(service=s, options=options)
browser.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_radio')
browser.switch_to.frame('iframeResult')
elem = browser.find_element(By.XPATH, '//*[@id="age1"]')
# 선택이 안되어 있으면 선택하기
if elem.is_selected() == False: # 라디오 버튼이 선택되어 있지 않으면
print('Not selected')
elem.click()
else: # 라디오 버튼이 선택되어 있으면
print('selected')
time.sleep(3)
# 선택이 안되어 있으면 선택하기
if elem.is_selected() == False: # 라디오 버튼이 선택되어 있지 않으면
print('Not selected')
elem.click()
else: # 라디오 버튼이 선택되어 있으면
print('selected')
time.sleep(3)
browser.quit()
Not selected
selected
위의 options 부분은 chrome_browser_main_extra_parts_metrics.cc 같은 오류 메세지를 없애주는 역할을 해준다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
s = Service('C:/webdriver/chromedriver.exe')
browser = webdriver.Chrome(service=s, options=options)
browser.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_checkbox')
browser.switch_to.frame('iframeResult')
elem = browser.find_element(By.XPATH, '//*[@id="vehicle1"]')
if elem.is_selected() == False:
print('Not selected')
elem.click()
else:
print('Selected')
time.sleep(2)
browser.quit()
체크 박스는 라디오 버튼과 다르게 다시 클릭하면 해제되므로 if문을 잘 이용해야 한다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
s = Service('C:/webdriver/chromedriver.exe')
browser = webdriver.Chrome(service=s, options=options)
browser.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_option')
browser.switch_to.frame('iframeResult')
# cars에 해당하는 element를 찾고, 드롭다운 내부에 있는 3번째 옵션을 선택
elem = browser.find_element(By.XPATH, '//*[@id="cars"]/option[3]') # [1]이 첫 번째
elem.click()
time.sleep(3)
# 완전히 일치하는 텍스트 값을 통해서 선택
# 옵션 중에서 텍스트가 Saab인 항목을 선택
elem = browser.find_element(By.XPATH, '//*[@id="cars"]/option[text()="Saab"]')
elem.click()
time.sleep(3)
# 텍스트 값이 부분 일치하는 항목 선택하는 방법
# 옵션 중에서 텍스트가 Vo를 포함하는 항목을 선택
elem = browser.find_element(By.XPATH, '//*[@id="cars"]/option[contains(text(), "Vo")]')
elem.click()
time.sleep(3)
browser.quit()
select option 태그는 드롭다운 형식이다.