์นํ์ด์ง ๋ก๋ฉ ์ค์ ์น ํ์ด์ง์ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์ผ๋ฉด, ํ ์คํธ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ(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