๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SQA/Automation

Selenium ํ…Œ์ŠคํŠธ ์‹คํŒจ ์ˆœ๊ฐ„ ์Šคํฌ๋ฆฐ์ƒท ์บก์ณ ๋ฐฉ๋ฒ• java

ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ, ๋ณดํ†ต์€ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•œ ํ›„, quit() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ driver๋ฅผ ์ข…๋ฃŒํ•˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค. (์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์„ ๋๋‚ด๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.)

ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจ๋กœ ๋๋‚œ ๊ฒฝ์šฐ์—๋Š” ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์–ด๋–ค ๋ถ€๋ถ„์ด ์ž˜ ๋™์ž‘ํ•˜์ง€ ์•Š์•„์„œ ์‹คํŒจํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋Š” ์ž๋™์œผ๋กœ ํ™”๋ฉด์„ ์บก์ฒ˜ํ•ด ์ฃผ๋Š” ์Šคํฌ๋ฆฐ์ƒท ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํฌ๋ฆฐ์ƒท ์บก์ฒ˜ ๊ธฐ๋Šฅ์€ ์›น์•ฑ์— ๋Œ€ํ•œ ํ†ต์ œ ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์ฃผ๋Š” ์›น ๋“œ๋ผ์ด๋ฒ„์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

 

 

์Šคํฌ๋ฆฐ์ƒท-์บก์ณ-๊ธฐ๋Šฅ-์„ฌ๋„ค์ผ
์Šคํฌ๋ฆฐ์ƒท ์บก์ณ ๊ธฐ๋Šฅ

 

 

์Šคํฌ๋ฆฐ์ƒท ์บก์ฒ˜

์Šคํฌ๋ฆฐ์ƒท์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•œ ๋‹น์‹œ์˜ ์ƒํ™ฉ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์›น๋“œ๋ผ์ด๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ TakesScreenShot ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ชจ๋“  ์›น๋“œ๋ผ์ด๋ฒ„ ๊ตฌํ˜„์ฒด์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

์Šคํฌ๋ฆฐ์ƒท ์บก์ณ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Šฅ์„ on/off ํ•  ์ˆ˜ ์—†๋Š” ์ฝ๊ธฐ ์ „์šฉ ์„ค์ •์ด๋‹ค. ๋””ํดํŠธ๋Š” ํ™œ์„ฑํ™” ์ƒํƒœ์ด๋‹ค.

 

 

getScreenshotAs()

TakesScreenshotAs ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜์ธ getScreenshotAs() ๋ฉ”์„œ๋“œ์˜ API๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

public X getScreenshotAs( OutputType target )

 

OutputType์€ ์›น๋“œ๋ผ์ด๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

 

์›น๋“œ๋ผ์ด๋ฒ„๋Š” 3๊ฐ€์ง€ ํฌ๋งท์œผ๋กœ ์Šคํฌ๋ฆฐ์ƒท์„ ์บก์ณํ•œ๋‹ค.

  • BASE64, BYTES, FILE

FILE ํฌ๋งท์„ ์„ ํƒํ•˜๋ฉด ์บก์ณ ์ด๋ฏธ์ง€๊ฐ€ png ํŒŒ์ผ๋กœ ์ž‘์„ฑ๋๋‹ค๊ฐ€ JVM์ด ์ข…๋ฃŒํ•˜๋ฉด ์‚ญ์ œ๋œ๋‹ค. ํ…Œ์ŠคํŠธ ์ดํ›„์—๋„ ์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŒŒ์ผ์„ ์•ˆ์ „ํ•œ ๊ณณ์— ๋ณต์‚ฌํ•ด์•ผ ํ•œ๋‹ค.

 

์Šคํฌ๋ฆฐ์ƒท์˜ ๊ฒฐ๊ณผ๋Š” ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋œ๋‹ค.

- ์ „์ฒด ํŽ˜์ด์ง€

- ํ˜„์žฌ ๋ณด์ด๋Š” ์œˆ๋„์šฐ

- ํ”„๋ ˆ์ž„์—์„œ ๋ณด์ด๋Š” ๋ถ€๋ถ„

- ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด

 

ํŒŒ์ด์–ดํญ์Šค ๋“œ๋ผ์ด๋ฒ„์—์„œ getScreenshotAs()๋Š” ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์บก์ณํ•˜์ง€๋งŒ, ํฌ๋กฌ ๋“œ๋ผ์ด๋ฒ„๋Š” ํ˜„์žฌ ํ”„๋ ˆ์ž„์—์„œ ๋ณด์ด๋Š” ์˜์—ญ๋งŒ ์บก์ณํ•œ๋‹ค.

 

 

์›นํŽ˜์ด์ง€ ์Šคํฌ๋ฆฐ์ƒท์„ ์บก์ณํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž. target ํด๋”์—์„œ ์ €์žฅํ•œ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

System.setProperty("webdriver.chrome.driver", "./src/test/resources/drivers/chromedriver");
	  
driver = new ChromeDriver();
	  
driver.get("http://www.naver.com/");
	  
File scrFile = ( (TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("./target/screenshot.png"));

 

์•„๋ž˜์™€ ๊ฐ™์ด png ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

 

 

ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ…Œ์ŠคํŠธ ์‹คํŒจ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํŒจ ์ƒํ™ฉ์˜ ํ™”๋ฉด์„ ์บก์ณํ•ด์„œ ์ €์žฅํ•˜๊ฑฐ๋‚˜, testcase์˜ ๊ฒฐ๊ณผ๊ฐ’(comment)์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ๊ธ€

 

Selenium ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ ์‚ฌ์šฉ๋ฒ• Headless Mode

์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด ๋ณธ ์‚ฌ๋žŒ์€ ์•Œ๊ฒ ์ง€๋งŒ, ํ•œ ๋ฒˆ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‹ค์ œ ์›น ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๋งค๋ฒˆ ์ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง์ ‘ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ

dev-yujin.tistory.com