2010-12-22 9 views
5

Tengo un cuadro de selección que tiene un detector de eventos en él:evento de cambio de selenio IE no disparado

$(document).ready(function() { 
    $('#edit-era-code-select').change(function() { 
     $.ajax({ 
     url: Drupal.settings.basePath+'era/js', 
     type: 'POST', 
     data: "era_code_select="+$(this).val(), 
     context: document.body, 
     success: function(){ 
     window.location.reload(true); 
     } 
    }); 
    }); 
}); 

Será funciona bien cuando se utiliza en IE/FF/... Al hacer pruebas de selenio utilizando phpunit it Puedo ver que se está cambiando la casilla de selección, pero no desencadena el cambio de evento jquery. Solo sucede en IE. Aquí está el código que hace el comando:

AbstractSeleniumTestCaseIexplore::loginShib ($user ['uid']); 
    $this->waitForElementPresent("//select[@id='edit-era-code-select']", 30000); 
    $code = $this->getSelectedLabel("//select[@id='edit-era-code-select']"); 
    if ($code != 3333) { 
    $this->select("edit-era-code-select", "label=3333"); 
    $this->waitForPageToLoad("30000"); 
    } 
    ... 

¿Alguien puede ayudar?

+0

estoy teniendo el mismo problema con un proyecto maravilloso/griales. La ayuda es apreciada. –

Respuesta

0

¿Ha intentado enviar eventos de pulsación de tecla a la selección en lugar de modificar directamente el valor?

+0

Eso no parece ayudar. –

9

Lo solucioné así. No es óptimo, pero te permite continuar y probar otras cosas.

$this->runScript("$('#edit-era-code-select').change()");

+0

Me encontré con un problema similar y terminé haciendo algo como esto. Sin embargo, cabe señalar que requiere que jQuery sea cargado por la página web. – Argote

+0

@domidc - esto no funciona para mí en Selenium 2. ¿Sabes si hay una solución diferente? thx – RSG

2

Usted puede conseguir que funcione sin algunos trucos, como secuencia de comandos de ejecución que se disparó el evento de cambio. Selenium genera javascript desde su código y lo inyecta en el navegador, que lo ejecuta. Pero si cambia la opción seleccionada de cualquier selección mediante javascript, nunca funcionará.

que he hecho pequeño ejemplo con el fin de entender que (si cambia la opción seleccionada por manos 'cambio' fuego evento, pero no a través de JavaScript Puede comprobar ejemplo viable here.):

<select id="someTxt"> 
    <option value="1">Option1</option> 
    <option value="2">Option2</option> 
    <option value="3">Option3</option> 
</select> 
<div id="button">Change selected option via javascript</div> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $('#someTxt').change(function() { 
     alert($("#someTxt option:selected").text()); 
     }); 
    $("#button").bind("click", function(){ 
     $("#someTxt option[value='3']").attr('selected', 'selected'); 
    }); 
    }); 
</script> 

así que creo que esto está bien para disparar manualmente evento como:

$this->runScript("$('#edit-era-code-select').change()"); 
+0

esto ya no funciona en IE para mí en Selenium 2.3. ¿Sabes si hay una solución diferente? – RSG

+0

@RSG Lamentablemente no conozco otra solución :( –

+0

daga. Gracias por responder de todos modos, continuaré la búsqueda. – RSG

1

debe establecer el foco en primer lugar:

runScript("document.getElementById('selectboxID').focus()) 

Este problema va a pasar en el navegador IE

Cuestiones relacionadas