don't stop believing

element highlight로 확인해 보기 본문

Testing Automation/Selenium

element highlight로 확인해 보기

Tongchun 2018. 3. 22. 11:06

Selenium Code를 작성할때 element를 잘 찾았는지 확인해 보고 싶을때가 있습니다.

SikuliX를 배울때는 highlight 함수가 있어 편하게 확인했는데 Selenium에서는 함수를 하나 만들어 줘야 합니다.


selenium의 webdriver 클레스에 execute_script() 함수가 있습니다. 이걸 사용하면 현재 열려진 화면에 css를 수정하거나 할 수 있습니다.

함수는 아래와 같습니다.

def highlight(element):
	# 파라메터로 전달받은 element의 상위 driver를 확인합니다.
	driver = element._parent

	# highlight() 함수안에 apply_style()이라는 내부 함수를 만들어 줍니다.
	def apply_style(s):
		# execute_script() 함수를 사용해 해당 element의 css를 추가해 줍니다.
		driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element, s)

	# 원래 스타일을 확인하고 저장해 놉니다.
	original_style = element.get_attribute('style')

	# 내부 함수인 apply_style로 css를 적용합니다.
	# 바탕은 노란색, 외곽선은 붉은색오로 합니다.
	apply_style("background: yellow; border: 2px solid red;")

	# 스타일을 변경한 채로 2초간 대기합니다.
	time.sleep(2)

	# 다시 원래 스타일로 적용합니다.
	apply_style(original_style)


위 highlight 함수를 기본 스크립트에 적용해 봅시다.

# -*- coding: utf-8 -*-
import time
from selenium import webdriver

# selenium 기본 코드에 hightlight() 함수를 적용합나다.
def highlight(element):
	driver = element._parent

	def apply_style(s):
		driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element, s)

	original_style = element.get_attribute('style')
	apply_style("background: yellow; border: 2px solid red;")
	time.sleep(2)
	apply_style(original_style)

# Chrome WebDriver를 이용해 Chrome을 실행합니다.
driver = webdriver.Chrome('./chromedriver')

# www.google.com으로 이동합니다.
driver.get("www.google.com")
time.sleep(2)

# html element 이름이 q인 것을 찾습니다. (검색창)
inputElement = driver.find_element_by_name("q")
# htghlight() 함수로 inputElement를 확인해 봅니다.
highlight(inputElement)
time.sleep(2)

# 검색창에 'www.ngle.co.kr'을 입력합니다.
inputElement.send_keys("www.ngle.co.kr")
time.sleep(2)

# 검색 내용을 보냅니다.
inputElement.submit()
time.sleep(2)

# 검색된 리스트 중 링크 텍스트에 'THE BEST BUSINESS PLAN'이 포함된 것을 찾습니다.
continue_link = driver.find_element_by_partial_link_text('THE BEST BUSINESS PLAN')
# htghlight() 함수로 continue_link 확인해 봅니다.
highlight(continue_link)
time.sleep(2)

# 해당 링크를 클릭합니다.
continue_link.click()
time.sleep(5)

# WebDriver를 종료합니다. (브라우저 닫기)
driver.quit()

highlight 함수를 만들어서 element를 확인하는 방법이었습니다.


Comments