2010-03-30 14 views
10

Ho provato una serie di cose per provare a ottenere da Selenium un evento "onchange" da un menu a discesa, nessuno dei quali ha funzionato.Selenium onChange non funzionante

Il codice HTML incriminato è:

<select onchange="doOpperation(this.options[this.selectedIndex]); this.selectedIndex = 0;" name="opps_ondemand" id="opps_ondemand"> 
    <option value="none" id="ondemand">Mark as...</option> 
    <option cmd="blah1" value="add">Something</option> 
    <option cmd="blah2" value="remove">None</option> 
</select> 

Ho letto che Selenio IDE non registra alcuni su eventi *, e quindi sarebbe saggio usare fireEvent():

$this->click("opps_ondemand"); 
$this->select("opps_ondemand", "label=Mark as..."); 
$this->click("//option[@value='add']"); 
sleep(3); 
$this->fireEvent("//select[@id='opps_ondemand']", "change"); 

Tuttavia, questo non funziona (con o senza fireEvent). Ho anche provato ad utilizzare

$this->fireEvent("locator", "click"); 

invece di

$this->click("locator"); 

ma questo non ha fatto nulla.

Il selenio non si lamenta di questi locatori non esistenti quindi presumo che possa vedere bene gli elementi di selezione/opzione. Il problema sembra essere l'evento onChange.

Qualcuno sa come risolvere questo?

Grazie.

+0

Quale browser stai usando? – John

+0

Sto testando su Firefox 3.5.8. – tohop

risposta

2

provato questo?

$this->fireEvent("opps_ondemand", "onchange"); 

fireEvent (element_id, event_to_trigger);

5

ho incontrato esattamente questo problema, ma in IE solo (Firefox e Google Chrome funziona bene per me)

ho trovato la soluzione per essere forzare manualmente l'aggiornamento utilizzando JavaScript attraverso il selenio di runScript. Alcuni modi per farlo possono essere trovate qui:

How do I programmatically force an onchange event on an input?

Per esempio, se ho jQuery nella mia pagina Web, farei questo:

$this->select('IDOfSelectElement', '*some label*'); 
$this->runScript("$('#IDOfSelectElement').trigger('change')"); 
+0

Grazie! Questo ha funzionato per me. – sonicwizard