[JAVA #7] [Web Automation #7] Controlling STEEMIT web pages with Selenium #5 Swith to... [KR]
image source: pixabay
웹 페이지를 다루다 보면 브라우저창 여러개를 컨트롤해야 할 때가 있다. 이 때 selenium의 switchTo()로 창 전환을 할 수 있는데 오늘은 이 메서드에 대해서 알아보도록 한다. 이 메서드는 창뿐만 아니라, Alert 그리고 iframe과도 밀접한 관계가 있어 여러모로 쓸데가 있을 것 같다.
driver.switchTo()....
로 사용된다.
1. 브라우저 팝업창, 탭 제어
Set<String> handles = driver.getWindowHandles();
for(String handle : handles) {
driver.switchTo().window(handle);
}
1-1) 창에는 핸들이라는 고유의 String이 있는데 getWindwoHandles()로 핸들을 집합에 저장한다. 집합에 저장하는 이유는 집합은 순서가 있고, 중복을 허용하지 않기때문이다.
1-2) for Each문으로 핸들러에 switch 하여 맨 나중에 오픈된 창으로 이동한다.
2. 브라우저 얼럿 제어
브라우저 얼럿에는 1)확인 버튼만 있는 Alert, 2)확인/취소 버튼이 있는 confirm, 3)확인/취소 버튼 외 입력박스도 포함되어 있는 prompt가 있다.
Selenium은 이 세가지를 모두 Alert 클래스 하나로 제어할 수 있다.
2-1. 일반 얼럿창 텍스트를 불러오고, 확인
Alert alert = driver.switchTo().alert();
alert.getText();
alert.accept();
2-2. 컨퍼메이션창 취소
Alert alert = driver.switchTo().alert();
alert.dismiss();
2-3. prompt창에 텍스트 입력 후 확인
Alert alert = driver.switchTo().alert();
alert.sendKeys("text");
alert.accept();
3. iframe 제어
네이버 블로그 글쓰기 창 같은 웹페이지는 html 코드 내에 아래와 같은 iframe 태그가 있다.
iframe 의 내부 태그는 직접 findElement로 찾을 수 없고, 먼저 iframe으로 switch 후 태그를 찾아야 한다. 인자는 id, name값 그리고 WebElement 객체를 인자로 넣을 수 있다.
다시 iframe 밖의 태그를 찾으려면 driver.switchTo().defaultContent();
로 원래 Content로 돌아가야 한다.
//switch to iFrame
driver.switchTo().frame("mainFrame");
//OR
WebElement frame = driver.findElement(By.id("mainFrame"));
driver.switchTo().frame(frame);
/**
* Some Actions
*/
// switch back default content
driver.switchTo().defaultContent();
.
.
.
.
[Cookie 😅]
이 외에 swithTo()
메서드는 parentFrame()
,activeElement()
등을 지원한다.
Seleniun java lib version: 3.141.59
@tipu curate
👋👋👋
来自于 [WhereIn Android] (http://www.wherein.io)
Upvoted 👌 (Mana: 10/15 - need recharge?)
🤩😄😀👍 谢谢
你今天过的开心吗?欢迎在steemauto里设置跟赞 @cnbuddy 给整个cn区点赞倘若你想让我隐形,请回复“取消”。