디지털 컨버전스/Selenium
[Selenium] 팝업창 제어
gimyeondong
2020. 4. 22. 15:47
getWindowHandles
운영체제에서 부여한 윈도우별 id : 핸들값 핸들id
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Quiz02 {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions option = new ChromeOptions();
// option.addArguments("headless"); // 헤드레스 모드, 창없이 내부적으로 처리
// option.addArguments("--blink-setting=imagesEnable=false"); // 페이지 로딩에서 이미지 제외
// WebDriver driver = new ChromeDriver(option);
WebDriver driver = new ChromeDriver();
WebDriverWait wait = new WebDriverWait(driver,10);
JavascriptExecutor js = (JavascriptExecutor)driver;
long startTime = System.currentTimeMillis();
driver.get("https://front.wemakeprice.com/promotion/3693");
String defaultWindow = driver.getWindowHandle(); // 윈도우핸들값 저장
List<WebElement> product_btns = driver.findElements(By.className("flag_wrap"));
product_btns.get(0).click();
// 운영체제가 윈도우 별로 id를 부여 : 핸들값 핸들id
// getWindowHandles : 핸들값을 가져와라
Set<String> hwnds = driver.getWindowHandles();
//set 은 순서가 없으므로 foreach로 출력
System.out.println("Default hwnd : "+defaultWindow);
for(String hwnd : hwnds) {
System.out.println(hwnd);
if(!hwnd.contentEquals(defaultWindow)) { //변경
driver.switchTo().window(hwnd);
break;
}
}
List<WebElement> buy_btns = driver.findElements(By.className("btn_sys"));
buy_btns.get(0).click();
long endTime = System.currentTimeMillis();
System.out.println( endTime - startTime );
Thread.sleep(5000);
driver.close();
}
}
defaultWindow 저장
String defaultWindow = driver.getWindowHandle(); // 윈도우핸들값 저장
// 운영체제가 윈도우 별로 id를 부여 : 핸들값 핸들id
// getWindowHandles : 핸들값을 가져와라
Set<String> hwnds = driver.getWindowHandles();
System.out.println("Default hwnd : "+defaultWindow);
//set 은 순서가 없으므로 foreach로 출력
for(String hwnd : hwnds) {
System.out.println(hwnd);
if(!hwnd.contentEquals(defaultWindow)) { //변경
driver.switchTo().window(hwnd);
break;
}
}
새탭으로 이동
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Quiz02 {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions option = new ChromeOptions();
WebDriver driver = new ChromeDriver();
WebDriverWait wait = new WebDriverWait(driver,10);
JavascriptExecutor js = (JavascriptExecutor)driver;
long startTime = System.currentTimeMillis();
driver.get("https://front.wemakeprice.com/promotion/3693");
String defaultWindow = driver.getWindowHandle(); // 윈도우핸들값 저장
List<WebElement> product_btns = driver.findElements(By.className("flag_wrap"));
product_btns.get(0).click();
// 운영체제가 윈도우 별로 id를 부여 : 핸들값 핸들id
// getWindowHandles : 핸들값을 가져와라
Set<String> hwnds = driver.getWindowHandles();
//set 은 순서가 없으므로 foreach로 출력
System.out.println("Default hwnd : "+defaultWindow);
for(String hwnd : hwnds) {
driver.switchTo().window(hwnd);
System.out.println(hwnd);
}
List<WebElement> buy_btns = driver.findElements(By.className("btn_sys"));
buy_btns.get(0).click();
long endTime = System.currentTimeMillis();
System.out.println( endTime - startTime );
Thread.sleep(5000);
driver.close();
}
}