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

SQA

(35)
Selenium ๋งˆ์šฐ์Šค ํด๋ฆญ ์•ก์…˜ Click ์‚ฌ์šฉ๋ฒ• ์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ, ์…€๋ ˆ๋‹ˆ์›€์˜ ์•ก์…˜ API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ณต๋ถ€ํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋งˆ์šฐ์Šค ํด๋ฆญ์•ก์…˜ ๋ฉ”์„œ๋“œ์ธ click() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์š”์†Œ๋ฅผ ํด๋ฆญํ•ด ๋ณธ๋‹ค. click() ๋ฉ”์„œ๋“œ๋Š” Actions ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆ์šฐ์Šค ์•ก์…˜์€ 8๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. click ( ) click() ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ์œ„์น˜์—์„œ ๋งˆ์šฐ์Šค์˜ ์™ผ์ชฝ ๋ฒ„ํŠผ์„ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜๋Š” ์ƒํ™ฉ์„ ์žฌํ˜„ํ•œ๋‹ค. ๋„ค์ด๋ฒ„ํ™ˆ์œผ๋กœ ์ด๋™ํ•œ ํ›„, ๋ฉ”๋‰ด๋ฐ”์— ์žˆ๋Š” ์‡ผํ•‘๋ผ์ด๋ธŒ ๋ฒ„ํŠผ์œผ๋กœ ๋งˆ์šฐ์Šค๋ฅผ ์ด๋™(moveByOffset์„ ์‚ฌ์šฉํ•œ๋‹ค.)์‹œํ‚จ๋‹ค. ๊ทธ ๋‹ค์Œ click() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ฆญํ•ด๋ณด์ž. @Test public void clickTest() { //๋„ค์ด๋ฒ„๋กœ ์ด๋™ driver.get("https://www.nave..
Selenium ์•ก์…˜API ๋ณตํ•ฉ ์•ก์…˜ Actions ํด๋ž˜์Šค ์‚ฌ์šฉ๋ฒ• ์…€๋ ˆ๋‹ˆ์›€์˜ ์•ก์…˜ API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ณตํ•ฉ ์•ก์…˜์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ์•ก์…˜? ์‚ฌ์šฉ์ž ์•ก์…˜์˜ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค. Shift ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ํ‚ค๋ฅผ ์ž…๋ ฅํ•ด ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œํ•œ๋‹ค. ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•œ ์ƒํƒœ๋กœ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•œ๋‹ค. ๊ทธ๋ƒฅ ํ…์ŠคํŠธ ๋ฐ•์Šค์— ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๋‹จ์ผ ํ–‰๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์‚ฌ์šฉ์ž ์•ก์…˜๋„ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ์‚ฌ์šฉ์ž๋“ค์€ ์—ฌ๋ ค ๊ฐœ์˜ ํ–‰๋™์„ ์กฐํ•ฉํ•ด ๋ณต์žกํ•œ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ, Actions Class ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์„ ์กฐํ•ฉํ•˜๊ณ  ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์•ก์…˜ API๋กœ ๋ณตํ•ฉ ์•ก์…˜ ๋งŒ๋“ค๊ธฐ ์•ก์…˜API๋กœ ๋ณตํ•ฉ์•ก์…˜์„ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ณด๊ธฐ ์œ„ํ•ด, ์˜ˆ์ œ ํŽ˜์ด์ง€(๋งํฌ)์— ์ง„์ž…ํ•ด๋ณด์ž. ์˜ˆ์ œ ํŽ˜์ด์ง€์—๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ..
Selenium ์ฟ ํ‚ค ํ•ธ๋“ค๋ง, cookie ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ž๋™ํ™” java ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” java ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ์˜ค๋Š˜์€ ์›น ๋“œ๋ผ์ด๋ฒ„์˜ ๊ธฐ๋Šฅ ์ค‘์— ์ฟ ํ‚ค๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณธ๋‹ค. ์ฟ ํ‚ค ๋‹ค๋ฃจ๊ธฐ ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ๋กœ๊ทธ์ธํ•ด์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ง„์ž…, ๋กœ๊ทธ์ธํ•ด์„œ ์ตœ๊ทผ ๊ตฌ๋งค ๋ชฉ๋ก ์ง„์ž…, ๋กœ๊ทธ์ธํ•ด์„œ.... ๋งค๋ฒˆ ์‹œ๋‚˜๋ฆฌ์˜ค๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ๋”ฐ๋กœ ํ•œ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์€ ๊ทธ๋งŒํผ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ๋กœ๊ทธ์ธ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ธฐ ์œ„ํ•ด, ์ตœ์ดˆ ๋กœ๊ทธ์ธํ•  ๋•Œ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ํŒŒ์ผ์— ๋ณด๊ด€ํ•œ ํ›„, ๋‹ค์Œ๋ฒˆ ๋กœ๊ทธ์ธ์—๋Š” ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ๋“œ๋ผ์ด๋ฒ„์— ์ถ”๊ฐ€ํ•˜๋Š” ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ํ‚ค ์ €์žฅํ•˜๊ธฐ ์›น ๋“œ๋ผ์ด๋ฒ„๋Š” ์•„๋ž˜ ๋ฉ”์„œ๋“œ๋กœ ํ˜„์žฌ ๋กœ๋“œํ•œ ์›น ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. driver.manage().getCookies() ์ฟ ํ‚ค๋Š” ์ด๋ฆ„, ๊ฐ’, ๋„๋ฉ”์ธ, ๊ฒฝ๋กœ, ๋งŒ๋ฃŒ์ผ, ์•”ํ˜ธํ™” ๊ด€๋ จ..
Selenium ๋ฌต์‹œ์  ๋Œ€๊ธฐ์™€ ๋ช…์‹œ์  ๋Œ€๊ธฐ, NoSuchElementException ์›นํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ค‘์— ์›น ํŽ˜์ด์ง€์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์œผ๋ฉด, ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ(no such element exception)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์˜ ์ด์œ ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ์ข‹์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋Šฆ๋Š” ๊ฒฝ์šฐ ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋•Œ ์›น ์—˜๋ฆฌ๋จผํŠธ ๋กœ๋”ฉ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด ์Šคํฌ๋ฆฝํŠธ ์ง„ํ–‰์„ ์ž ์‹œ ๋ฉˆ์ท„๋‹ค๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ์ ‘๊ทผ์ด ํ•„์š”ํ•˜๋‹ค. ๋ฌต์‹œ์  ๋Œ€๊ธฐ์™€ ๋ช…์‹œ์  ๋Œ€๊ธฐ ์›น๋“œ๋ผ์ด๋ฒ„๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„์€ NoSuchElementException ์ด ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ๋ง‰๊ธฐ์œ„ํ•ด ์›น ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค. ์›น๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์›น ์—˜๋ฆฌ๋จผํŠธ ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 1. ๋ฌต์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„ : ์ „์ฒด ์—˜๋ฆฌ๋จผํŠธ์— ๋ชจ๋‘ ๋™์ผํ•œ ํƒ€์ž„..