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

SQA/Automation

Selenium ๋ฌต์‹œ์  ๋Œ€๊ธฐ์™€ ๋ช…์‹œ์  ๋Œ€๊ธฐ, NoSuchElementException

์›นํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ค‘์— ์›น ํŽ˜์ด์ง€์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์œผ๋ฉด, ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ(no such element exception)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์˜ ์ด์œ ๋Š” ๋„คํŠธ์›Œํฌ๊ฐ€ ์ข‹์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋Šฆ๋Š” ๊ฒฝ์šฐ ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋•Œ ์›น ์—˜๋ฆฌ๋จผํŠธ ๋กœ๋”ฉ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด ์Šคํฌ๋ฆฝํŠธ ์ง„ํ–‰์„ ์ž ์‹œ ๋ฉˆ์ท„๋‹ค๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ์ ‘๊ทผ์ด ํ•„์š”ํ•˜๋‹ค.

 

 

 

๋ฌต์‹œ์ ๋Œ€๊ธฐ-๋ช…์‹œ์ ๋Œ€๊ธฐ
๋ฌต์‹œ์  ๋Œ€๊ธฐ์‹œ๊ฐ„๊ณผ ๋ช…์‹œ์  ๋Œ€๊ธฐ์‹œ๊ฐ„

 

๋ฌต์‹œ์  ๋Œ€๊ธฐ์™€ ๋ช…์‹œ์  ๋Œ€๊ธฐ

์›น๋“œ๋ผ์ด๋ฒ„๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„์€ NoSuchElementException ์ด ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ๋ง‰๊ธฐ์œ„ํ•ด ์›น ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.

 

์›น๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์›น ์—˜๋ฆฌ๋จผํŠธ ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

1. ๋ฌต์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„ : ์ „์ฒด ์—˜๋ฆฌ๋จผํŠธ์— ๋ชจ๋‘ ๋™์ผํ•œ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์„ ์„ค์ •

2. ๋ช…์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„ : ๊ฐ ์—˜๋ฆฌ๋จผํŠธ์— ๊ฐœ๋ณ„์ ์ธ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์„ ์„ค์ •

 

 

๋ฌต์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„

๋ชจ๋“  ์›น ์—˜๋ฆฌ๋จผํŠธ์— ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•œ๋‹ค. ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋„ˆ๋ฌด ๊ธธ๊ฒŒํ•ด์„œ ๋งŽ์ด ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๋„ˆ๋ฌด ์งง๊ฒŒ ํ•ด์„œ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ ์ ˆํ•œ ์กฐ์ •์ด ํ•„์š”ํ•˜๋‹ค. manage() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌต์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. implicitlyWait() ์˜ ์ธ์ž๋กœ ์›น ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ณง๋ฐ”๋กœ ์ฐพ์ง€ ๋ชปํ•  ๋•Œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

driver.manage().timeout().implicitlyWait(10, TimeUnit.SECONDS);

 

์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๋Œ€๊ธฐ์‹œ๊ฐ„์„ 10์ดˆ๋กœ ์„ค์ •ํ–ˆ๋‹ค. ์—˜๋ฆฌ๋จผํŠธ๋ฅผ 10์ดˆ ์•ˆ์— ์ฐพ์œผ๋ฉด ๊ณ„์† ์‹คํ–‰ํ•˜๊ณ , 10์ดˆ๊ฐ€ ์ง€๋‚˜๋„ ๋ชป ์ฐพ๋Š” ๊ฒฝ์šฐ, NoSuchElementException ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์†Œ๋Š” ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ, ์„œ๋ฒ„ ์„ค์ • ๋“ฑ ๋‹ค์–‘ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์— ๊ธฐ๋ฐ˜ํ•ด ์ ์ ˆํ•œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

๋ช…์‹œ์  ๋Œ€๊ธฐ ์‹œ๊ฐ„

์›ํ•˜๋Š” ์›น ์—˜๋ฆฌ๋จผํŠธ์— ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์—์„œ๋Š” searchBox ์—˜๋ฆฌ๋จผํŠธ์— ๋Œ€๊ธฐ์‹œ๊ฐ„์„ 20์ดˆ๋กœ ์„ค์ •ํ–ˆ๋‹ค.

WebElement searchBox = (new WebDriverWait(driver, 20)) 
    .until((ExceptedCondition<WebElement>) d -> 
        d.findElement(By.name("q");

 

 

 

 


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

 

Selenium ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ œ์–ด , ๋’ค๋กœ๊ฐ€๊ธฐ ์•ž์œผ๋กœ๊ฐ€๊ธฐ ์ƒˆ๋กœ๊ณ ์นจ

๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘์— ํ•˜๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋™์ž‘์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋™์ž‘์—๋Š” ํŽ˜์ด์ง€ ๋’ค๋กœ๊ฐ€๊ธฐ, ํŽ˜์ด์ง€ ์•ž์œผ๋กœ ๊ฐ€๊ธฐ, ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ๋“ฑ์ด

dev-yujin.tistory.com