2012-08-08 10 views
6

팝업 창에있는 iframe 요소를 선택하고 싶습니다. 팝업 창 내부로 갈 수 있지만 iframe을 찾을 수 없습니다. 아래는 팝업창의 html 코드입니다.Selenium Webdriver에서 iframe을 찾을 수 없습니다. (java)

<html> 
<head></head> 
<body> 
<iframe width="100%" height="100%" border="0" src="/some/url.do?parameter=getData"> 
<html> 
. 
. 
<table id="ec_table" class="tableRegion" width="20%" cellspacing="1" cellpadding="2" 
border="0"> 
<tr class="even"> 
<td> 
<input type="radio" value="173" name="hier_data_id"> 
</td> 
</tr> 
. 
. 
</html> 
</iframe> 
</body> 
</html> 

여기 iframe 내부에있는 라디오 버튼을 클릭하고 싶습니다. iframe에서 전환하려면 아래 코드를 사용했지만 iframe으로 전환하지는 않습니다. iframe이이 ID를 가지고 있지 않기 때문에

driver.switchTo().frame(myD.findElement(By.tag("iframe"))); 

, 내가 어려움은 iframe 내부 요소의 위치를 ​​찾는거야.

내가 어떻게 할 수 있는지 아는 사람이 있습니까? 사전에

감사합니다. iframe을 같이

답변

6

입니다.

//go to popup 
//switch to the first frame , assuming there's only one frame with no id or name 
driver.switchTo().frame(0); 
driver.findElement(By.name("hier_data_id")).click(); 
+0

많은 분들께 감사드립니다. –

2

는 ID가 HERE를 참조 있고

<iframe width="100%" height="100%" border="0" id="iframe" 
        src="/some/url.do?parameter=getData"> 

을 다음과 같이 대답하고 당신은 그것의 인덱스 프레임으로 전환 할 수 있습니다 코드는

driver.switchTo().frame(myD.findElement(By.id("iframe"))); 
+0

이 기능을 통해 전환 할 수있는 또 다른 후 2 개 iframe이 하나가있는 경우 여기 –

0

//iframe[@src="/some/url.do?parameter=getData "]

을하지만이 타이밍 & 로딩 문제가 될 수 있습니다 다음보십시오. 따라서 콘텐츠가로드되기 전에 iframe을 읽고 쓰거나 상호 작용하려고 할 수 있습니다. 요소를 선택하기 전에 요소를 확인하십시오. 그리고 그것이 없으면 기다려라. 당신이 당신은 내가 위의와 시도

$I->switchToWindow(); 
0

텍스트 "테스트 데이터"

$x = $I->grabAttributeFrom('//iframe', 'id'); 
$I->switchToIframe($x); 
$I->fillField('#tinymce', 'Test data'); 
$I->switchToWindow();` 

을있는 iFrame을 선택하고 입력에 대한 코드입니다 코드 (iframe id)는 여전히 iframe 요소를 식별 할 수 없습니다. 이상한 일은 타임 아웃 한도를 초과해도 테스트 케이스가 실패하지 않는 것입니다. 더 자세한 정보가 필요하면 알려주십시오.

관련 문제