[JAVA #7] [Web Automation #7] Controlling STEEMIT web pages with Selenium #5 Swith to... [KR]

in #sct6 years ago (edited)

redsjavahouse1591357_1280.jpg
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가 있다.
image.png
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 태그가 있다.
image.png
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

Sort:  

@tipu curate
👋👋👋

来自于 [WhereIn Android] (http://www.wherein.io)

🤩😄😀👍 谢谢

你今天过的开心吗?欢迎在steemauto里设置跟赞 @cnbuddy 给整个cn区点赞倘若你想让我隐形,请回复“取消”。

Coin Marketplace

STEEM 0.14
TRX 0.34
JST 0.033
BTC 117099.44
ETH 4577.31
SBD 0.88