2013-10-30 7 views
3

제발 도와주세요, 저는 셀렌으로 새롭습니다. 나는 전자 상거래 웹 사이트를 자동화하려고하고 나는 팝업 창을 다루는 데 문제가있다.Java with Selenium webdriver를 사용하여 팝업 창을 처리하는 방법

  1. 이동 헤더 섹션에서 판매 링크를 클릭
  2. http://www.lampsplus.com에 : 여기에 시나리오입니다.
  3. 페이지에 표시된 첫 번째 항목/제품을 클릭하십시오. 제품 페이지가 표시됩니다.
  4. 제품 페이지에서 빨간색 장바구니 버튼을 클릭하십시오. (카트에 제품을 추가하고 팝업을 표시합니다).
  5. 팝업창에 진한 회색 쇼핑 계속 버튼을 클릭하십시오. (이 팝업을 닫습니다.) I 5 단계에 붙어

(오류 메시지 : "쇼핑 계속 버튼을"요소를 찾을 수 없습니다) :

WebDriver d1 = new FirefoxDriver(); 
d1.manage().window().maximize(); 
d1.get("http://www.lampsplus.com"); 
d1.findElement(By.name("hdr_sale")).click(); 
d1.findElement(By.xpath(".//*[@id='sortResultContainer60238']/a[2]/span")).click(); 
d1.findElement(By.id("pdAddToCart")).click(); //This is step 4 
//Here is suppose to be some code which handles the popup - my problem 
d1.findElement(By.id("aContinueShopping")).click(); //This is step 5 

I 다음은 5 단계 전에 내 코드입니다 내게 ~ .getWindowHandle();을 알았어. 방법. 나는 그것의 몇몇 변이를 시도하고 그들 중 누구도 일하지 않았다. 아무도 나에게 그것을 어떻게 처리 할 생각을 줄 수 있습니다. 많은 감사합니다! Java를 사용합니다.

참고 : LampsPlus에서는 작동하지 않고 제품을 홍보하지 않으므로이 웹 사이트는 교육 목적으로 만 선택되었습니다.

답변

5

요소 aContinueShopping은 iframe 내에 포함되어 있습니다.

사용 iframe을 전환해야합니다 : 당신이 그것을 찾기 위해 WebElement 또는 숫자를 사용해야합니다, 그래서

가 iframe을에는 '이름'또는 'ID'없다
WebElement frameID = d1.findElement(By.Css("#add-to-cart>iframe")); 
d1.SwitchTo().Frame(frameID); 
d1.findElement(By.id("aContinueShopping")).click(); 

.

당신이 그 iframe을 함께 완료되면, 당신은 사용하여 '최고'로 다시 전환 할 수 있습니다 :

d1.SwitchTo().DefaultContent(); 
+0

우수함! 그것은 작동합니다! 너 천재 야! 많은 감사와 행복한 할로윈! – Artem

+0

@Artem 성공 했으므로이 답변 옆에있는 체크 표시를 클릭하여 동의를 표시해야합니다. –

+0

나 한테 고마워, +1. 나는 틀을 떠나서 팝업창을 보았고 돌아 왔을 때 페이지가 죽은 이유를 알 수 없었다. _iframe_은 오른쪽 프레임으로 돌아 가기 위해 switch_to_frame()을 수행해야한다는 점에서 저를 설명했습니다. –

관련 문제