2012-08-08 101 views
6

Quiero seleccionar un elemento de iframe que se encuentra en una ventana emergente. Puedo entrar en la ventana emergente pero no puedo encontrar iframe. A continuación se muestra el código html de la ventana emergente.No se puede encontrar el iframe en 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> 

Aquí quiero hacer clic en el botón de opción que se encuentra dentro de iframe. Utilicé el código siguiente para cambiar con iframe pero no está cambiando a iframe.

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

Como iframe no tiene ID, estoy encontrando dificultades para localizar elementos dentro de iframe.

¿Alguien sabe cómo podría hacerlo ...?

Gracias de antemano.

Respuesta

6

Puede cambiar a un marco por su índice. Pruebe lo siguiente:

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

Muchas gracias, funcionó. –

2

Como iframe tiene identificador refieren HERE y su respuesta es la siguiente

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

y su código es

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

he intentado con más arriba código (iframe id), aún no es capaz de identificar elementos iframe. Lo extraño es que el caso de prueba no está fallando, incluso se excede el límite de tiempo de espera. Por favor, avíseme si necesita más detalles. –

0

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

Pero esto podría ser un problema de sincronización de carga &. Por lo tanto, es posible que intente escribir/leer/interactuar con el iframe antes de que se haya cargado el contenido. Intente verificar el elemento antes de seleccionarlo. Y espera si no está presente.

0

aquí son el código de selección del iFrame e introduzca texto "datos de prueba"

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

Si tiene dos iFrame uno tras otro Usted puede cambiar a través de esta función

$I->switchToWindow(); 
Cuestiones relacionadas