2012-08-14 2 views
3

현재 작업중인 응용 프로그램은 새 창을 차례로 열어주는 많은 작업 흐름을 가지고 있습니다. 포커스를 새 창으로 전환하는 데 다음과 같은 방법을 사용했습니다.셀렌/webdriver 메서드를 사용하지 않고 새 창으로 전환하는 방법

for (String popUpHandle : driver.getWindowHandles()) { 
driver.switchTo().window(popUpHandle); 
if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window) 
... 
} 

같은 방식으로 페이지 제목과 함께 사용했습니다. selenium.isElementPresent를 사용하여 조건 내부에 들어가 새 창에서 특정 작업을 수행합니다.

위의 세 가지 솔루션은 정상적으로 작동하지만 한 번의 작업 흐름에서 2-3 개의 창이 숨겨져있을 때 IE에서 너무 많은 시간이 걸립니다.

일부 링크 또는 버튼을 클릭 한 후 곧바로 초점을 맞춘 새 창으로 전환하는 지침을 제공해 주시면 대단히 감사하겠습니다.

답변

5

조금 빨리 처리하려면 부모 창을 항상 무시해야합니다. 그래서 그런 짓을 :

//before any pop ups are open 
String parentHandle = driver.getWindowHandle(); 

//after you have pop ups 
for (String popUpHandle : driver.getWindowHandles()) { 
    if(!popUpHandle.equals(parentHandle)){ 
    driver.switchTo().window(popUpHandle); 
    if(driver.getCurrentUrl().equalsIgnoreCase(URL of the new window)){ 
     //do something here 
    } 
    } 
} 
컬렉션이 주문해야하기 때문에 당신은 또한 가장 최근에 오픈 창으로이 방법을 전환 할 수 있습니다

(* 나는 순간에 테스트하도록 설정된 셀레늄에 액세스 할 수없는, 생각 *) :

String newWindowHandle = driver.getWindowHandles()[driver.getWindowHandles().length - 1]; 
driver.switchTo().window(newWindowHandle); 

마지막으로, 당신은 사용하고 있는지 확인하지 셀레늄의 버전하지만 최신 IEDriver 상당히 빠르다 : 답장을 보내 http://code.google.com/p/selenium/wiki/InternetExplorerDriver

+0

정말 감사합니다. 또한 위의 트릭을 시도했지만 문제는 그림으로 나타납니다. 한 워크 플로우가 끝나고 총 6 ~ 7 개의 창 핸들이 표시되지만 두 개만 표시되므로 약 5 개의 창을 반복합니다. 너무 많은 시간이 걸립니다! 최신 IE 드라이버 (2.25)를 사용하고 있습니다. – arin

+0

방금 ​​열린 최신 창을 움켜 쥐는 또 다른 방법으로 대답이 업데이트되었습니다.이 방법이 도움이 될지 모르지만 두 가지 점을 확인하십시오.하지만 생각하겠습니다. – brendan

+0

훌륭한 접근 방식입니다. 나는 그것을 단지 검사했고 그것은 상당히 빠릅니다. – arin

관련 문제