2012-08-08 19 views
6

Desidero selezionare un elemento di iframe che si trova in una finestra popup. Sono in grado di andare all'interno della finestra popup ma non in grado di localizzare iframe. Di seguito è riportato il codice html della finestra popup.Impossibile trovare iframe in Selenium Webdriver (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> 

Qui voglio fare clic sul pulsante di opzione che si trova all'interno di iframe. Ho usato sotto il codice per passare con iframe ma non sta passando ad iframe.

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

Come iframe non ha id, sto trovando difficoltà individuare gli elementi all'interno di iframe.

Qualcuno sa come potrei farlo ..?

Grazie in anticipo.

risposta

6

È possibile passare ad un telaio dal suo indice. Provare quanto segue:

//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

Molte grazie, ha funzionato. –

2

Come iframe id ha riferiscono HERE e la tua risposta è la seguente

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

e il codice è

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

ho provato con sopra codice (id iframe), ancora non in grado di identificare gli elementi iframe. La cosa strana è che il test case non sta fallendo, anche il limite di timeout è superiore. Per favore fatemi sapere se avete bisogno di ulteriori dettagli. –

0

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

Ma questo potrebbe essere un problema di carico di temporizzazione &. Quindi potresti provare a scrivere/leggere/interagire con l'iframe prima che il contenuto sia caricato. Prova a controllare l'elemento prima di selezionarlo. E aspetta se non è presente.

0

ecco il codice per la selezione del iFrame e inserire testo "I dati dei test"

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

Se si dispone di due iFrame una dopo l'altra È possibile passare attraverso questa funzione

$I->switchToWindow(); 
Problemi correlati