2012-08-08 172 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。

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

由於iframe沒有id,我發現很難找到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

很多謝謝,它的工作。 – 2012-08-09 15:09:28

2

由於iframe中具有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

我上面嘗試切換有兩個iFrame的一個代碼(iframe id),仍然無法識別iframe元素。奇怪的是,即使超時限制超過,測試用例也沒有失敗。如果你需要更多的細節,請告訴我。 – 2012-08-08 16:59:02

0

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

但是這可能是一個時間&加載問題。所以你可能試圖在內容加載前寫入/讀取/與iframe交互。在選擇它之前嘗試檢查元素。如果它不存在,請等待。

0

這裏是選擇的iFrame和輸入文字「測試數據」

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

代碼如果您陸續您可以通過此功能

$I->switchToWindow(); 
相關問題