2011-03-28 6 views
2

일부 페이지 요소를 클릭하거나 상호 작용하는 데 문제가 있습니다. 그들은 정상적인 DOM 객체처럼 보입니다. 여기에있는 버튼은 하나의 코드입니다webDriver (Selenium 2)에서 switchTo() 메서드를 사용하여 창/팝업을 처리하는 방법 및 방법

버튼을 클릭 한 후 다른 팝업 창이 열렸습니다. 내 작업은 팝업 창에서 파일을 업로드하고 원래 창으로 돌아가는 것입니다. (< - 예를 들어 이름을했다) 나는

www.test.com에 대한 webDriver 시작

설명하려고합니다 내가

가 클릭 파일의 업로드 버튼 로그인

이 사이트를 방문한 후 위의 사이트 대신 www.foo.com으로 리디렉션됩니다. 이전에 만든 동일한 드라이버를 사용하고 있으며 업로드 한 페이지의 버튼과 상호 작용을 시도합니다.

button.click()

이 버튼은 절대로 발견되지 않지만, 그 버튼은 방화범에 사로 잡혀 정상적으로 보입니다.

+0

webdriver가 열린 동일한 창을 사용하는 한 전환 할 필요가 없습니다. 작동하지 않는 코드 스 니펫을 게시 할 수 있습니까? –

+0

나는 (핸들 문자열에 의해) 창 목록을 추적하고 switchTo()를 사용하여 원래 창으로 되돌아 가려고 할 때 때때로 (웹 개발자에서) JavaScript 익스 트랙터를 사용하여 창 포커스를 가져 와서 앞쪽으로 가져온다. (switchTo가 실패한 경우). – djangofan

답변

2

리디렉션 후 다시 창으로 전환 해보십시오. 당신이 창 핸들을 저장

:

String myWindowHandle = driver.getWindowHandle(); 

원하는 페이지로 리디렉션하고 switchTo 창 핸들을 사용하여 호출

driver.switchTo().window(myWindowHandle); 

페이지가 어떤 프레임을 포함 하는가를? 리디렉션 후에 올바른 프레임에 있지 않을 수도 있습니다.

+0

.Net 버전에서 작동합니까? 나는 이것에서 작동하도록 노력하고 있지만 아직 제목을 잡을 좋은 방법을 찾지 못했습니다. 새 창 제목이 _blank 일 수도 있습니다. – MichaelF

+0

@chaosr : 코드가 맞습니다. 하지만 myWindowHandle보다 먼저 defaultContent로 전환해야한다고 생각합니다. –

+0

@chaosr 새 창을 여는 대신 같은 브라우저에서 다른 탭의 링크를 여는 방법을 알려주시겠습니까? – SelenyanC2