์น์ฌ์ดํธ๋ฅผ ์ด์ฉํ ๋, ์ฐ๋ฆฌ๋ ํ ๊ฐ์ ์ฐฝ๋ง ์ฌ์ฉํ์ง๋ ์๋๋ค. ์์ฐฝ์ผ๋ก ๋งํฌ๊ฐ ์ด๋๋ ๊ฒฝ์ฐ, ๊ทธ ์ฐฝ์์์ ๋์์ ๋ง์น๋ฉด ์ด์ ์ฐฝ์ผ๋ก ๋์์์ผ ํ๋ค. ๊ทธ๋ด ๋๋ ๋ธ๋ผ์ฐ์ ์ฐฝ ํฌ์ปค์ฑ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ด๋ฒ์๋ ์๋์ฐ ์ฐฝ๊ณผ iFrame ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
์๋์ฐ ์ฐฝ๊ณผ iFrame ์ง์
์น๋๋ผ์ด๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ ์์ ์๋์ฐ ์ฐฝ, ๋ธ๋ผ์ฐ์ ํญ, ํ๋ ์ ์ฌ์ด๋ฅผ ์ด๋(ํฌ์ปค์ฑ)ํ ์ ์๋ค.
- ์์๋ก, ์ํ์ด๋ ๋ธ๋ก๊ทธ ์น์์ ๋งํฌ๋ฅผ ํด๋ฆญํด ์์ฐฝ์ ์ด์๋ค๊ฐ, ๋ค์ ์ด์ ์ฐฝ์ผ๋ก ๋์๊ฐ์ผํ๋ ๊ฒฝ์ฐ
- ๋ ๋ค๋ฅธ ์์๋ก, ํ๋ ์์ ๋ ๊ฐ๋ก ๋๋ ์ผ์ชฝ ํ๋ ์์๋ ์์ดํ ๋ชฉ๋ก์ด ์๊ณ , ์ค๋ฅธ์ชฝ ํ๋ฉด์๋ ์์ดํ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ์น ํ์ด์ง๊ฐ ์์ ์ ์๋ค.
์ ๋ ๋์ ์น๋๋ผ์ด๋ฒ๋ก ์ ์์๋ค์ ํ ์คํธํ ์ ์๋ค. ์ด๋ ์ฌ์ฉํ ์ ์๋ WebDriver.TargetLocator ์ธํฐํ์ด์ค๋ ํ๋ ์์ด๋ ์๋์ฐ ์ฐฝ์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค.
์๋์ฐ ์ฐฝ ์ ํํ๊ธฐ
TargetLocator()
TargetLocator()์ API ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ฐํ๊ฐ์ WebDriver.TargetLocator ์ธ์คํด์ค์ด๋ค.
WebDriver.TargetLocator switchTo()
๋ค์ด๋ฒ ํ์ ์ง์ > ๋ค์ด๋ฒ ํ ํ๋จ(footer)์ NAVER Corp ๋งํฌ์ ์ง์ > ๋ค์ ๋ค์ด๋ฒ ํ์ผ๋ก ๋์์ค๋ ํ๋์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
@Test
public void HandleWindow() {
String firstWindow = driver.getWindowHandle();
System.out.println("์ฒซ๋ฒ์งธ ์๋์ฐ ํธ๋ค์? : " + firstWindow);
WebElement link = driver.findElement(By.linkText("โ NAVER Corp."));
link.click();
String secondWindow = driver.getWindowHandle();
System.out.println("๋๋ฒ์งธ ์๋์ฐ ํธ๋ค์? : " + secondWindow );
System.out.println("์๋์ฐ ํธ๋ค์ ์๋ ? : " +
driver.getWindowHandles().size());
driver.switchTo().window(firstWindow);
}
@BeforeMethod
public void beforeMethod() throws IOException {
System.setProperty("webdriver.chrome.driver",
"./src/test/resources/drivers/chromedriver");
driver = new ChromeDriver();
driver.get("http://www.naver.com/");
}
![์ดํด๋ฆฝ์ค-์ฝ์-๊ฒฐ๊ณผ๊ฐ](https://blog.kakaocdn.net/dn/ckMqND/btscmLxSWA1/sB2cxn9kV2t9akDj408wbk/img.png)
์ ์ฝ๋๋ฅผ ์คํํ์ ๋, ์ดํด๋ฆฝ์ค์ ์ถ๋ ฅ๋๋ ์ฝ์ ๊ฐ์ ์์ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ , ์ ์์ ์ ์ฝ๋์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
String firstWindow = driver.getWindowHandle();
๋ค๋ฅธ ์๋์ฐ์ ๊ฐ๋ค๊ฐ ๋ค์ ๋์์ฌ ๊ฒ์ ๋๋นํ์ฌ ํธ๋ค์ ์ ์ฅํด ๋๋ค.
driver.getWindowHandles()
๋๋ผ์ด๋ฒ์ ๋ฑ๋ก๋ ๋ชจ๋ ์๋์ฐ ํธ๋ค์ ๊ฐ์ ธ์ Set ํ์ ์ผ๋ก ๋ฐํํด ์ค๋ค.
ํ๋ ์ ๊ฐ ์ ํ
์ด์ ๋ค์์ ์นํ์ด์ง์ ํ๋ ์์ ์ ํํด ๋ณด์.
์ด ์์ ํ์ด์ง(๋งํฌ)๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. ํด๋น ์์ ํ์ด์ง์์๋ ๊ฐ ํ๋ ์์ด ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ก๋ฉํ๊ณ ์๋ค.
@Test
public void FrameHandler() throws IOException {
//์ฒซ ๋ฒ์งธ ํ๋ ์
driver.switchTo().frame(0);
WebElement firstField = driver.findElement(By.name("1"));
firstField.sendKeys("๋๋ ์ฒซ ๋ฒ์งธ ํ๋ ์์ด๋ค!!");
driver.switchTo().defaultContent();
//๋ ๋ฒ์งธ ํ๋ ์
driver.switchTo().frame(1);
WebElement secondField = driver.findElement(By.name("2"));
secondField.sendKeys("๋๋ ๋ ๋ฒ์งธ ํ๋ ์์ด๋ค!!");
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "./src/test/resources/drivers/chromedriver");
driver = new ChromeDriver();
driver.get("http://guidebook.seleniumacademy.com/Frames.html");
}
driver.switchTo().frame(0);
์น ํ์ด์ง๊ฐ 3๊ฐ์ ํ๋ ์์ผ๋ก ๋์ด์์ผ๋ฉด 0,1,2 ๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ก ํ ๋น๋๋ค. ์ธ๋ฑ์ค 0์ DOM์์ ๋ง๋๋ ์ฒซ ๋ฒ์งธ ํ๋ ์์ด๋ค.
์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๋ ์์ ์ ์๋ค. ์ด๋๋ ํ๋ ์ ์ด๋ฆ์ ์ธ์๋ก ๋ฐ๋ ์ค๋ฒ๋ก๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ฅด๋ฉด ์ด๋ฆ์ผ๋ก๋ ํ๋ ์์ ์ด๋ํ ์ ์๋ค.
WebElement frame(WebElement FrameElement)
์ฌ๊ธฐ์์ ์ค์ํ ๋ถ๋ถ์ ๋ค๋ฅธ ํ๋ ์์ ์ด๋ํ๊ธฐ ์ ์, ๋ํดํธ ์ฝํ ์ธ ๋ก ์ด๋ํ ๋ค์์ ๋ค๋ฅธ ํ๋ ์์ผ๋ก ์ด๋ํด์ผ ํ๋ค. ๊ธฐ์ค(๋ํดํธ) ํ๋ ์์ผ๋ก ์ด๋ํ๋ ์ฝ๋๋ ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
driver.switchTo().defaultContent();
์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ๋์ ์คํฌ๋ฆฐ์ท ๊ธฐ๋ฅ(๋งํฌ) ์ผ๋ก ์บก์ณํด๋ณด์๋ค.
ํจ๊ป๋ณด๋ฉด ์ข์ ๊ธ
Selenium ํ ์คํธ ์คํจ ์๊ฐ ์คํฌ๋ฆฐ์ท ์บก์ณ ๋ฐฉ๋ฒ java
ํ ์คํธ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํ์ํฌ ๋, ๋ณดํต์ ์๋์ผ๋ก ์คํํ ํ, quit() ๋ฅผ ์ฌ์ฉํ์ฌ driver๋ฅผ ์ข ๋ฃํ๋๋ก ์ค๊ณํ๋ค. (์ด๋ ๊ฒ ํ์ง ์์ผ๋ฉด ์คํฌ๋ฆฝํธ ์คํ์ ๋๋ด๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋์ผ๋ก ์ข ๋ฃํด์ผ
dev-yujin.tistory.com