2010-12-22 10 views
5

ich eine Auswahlbox haben, die auf es ein Ereignis-Listener hat:Selen IE Änderungsereignis nicht ausgelöst

$(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); 
     } 
    }); 
    }); 
}); 

Es wird funktioniert gut, wenn es in dh/ff Verwendung/... Bei Verwendung tun Selen-Tests phpunit it Ich kann sehen, dass die selectbox geändert wird, aber es löst keine Änderung des jquery-Ereignisses aus. Es passiert nur in IE. Hier ist der Code, der den Befehl ausführt:

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"); 
    } 
    ... 

Kann jemand helfen?

+0

Ich habe das gleiche Problem mit einem groovy/Grails-Projekt. Hilfe wird geschätzt. –

Antwort

0

Haben Sie versucht, Tastendruckereignisse an die Auswahl zu senden, anstatt den Wert direkt zu ändern?

+0

Das scheint nicht zu helfen. –

9

Ich löste es so. Es ist nicht optimal, aber es erlaubt Ihnen, weiter zu machen und andere Dinge zu testen.

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

+0

Ich bin über ein ähnliches Problem gestolpert und habe am Ende so etwas gemacht. Es sollte beachtet werden, dass jQuery von der Webseite geladen werden muss. – Argote

+0

@domidc - das funktioniert nicht in Selenium 2. Wissen Sie, ob es eine andere Problemumgehung gibt? thx – RSG

2

Sie können es ohne einige Hacks, wie laufen Skript erhalten arbeiten, das Change-Ereignis ausgelöst. Selen generieren Javascript aus Ihrem Code und injizieren es im Browser, als es auszuführen. Aber wenn Sie die ausgewählte Option eines beliebigen über Javascript auswählen, funktioniert es nie.

Ich habe kleines Beispiel getan, um das zu verstehen (wenn Sie Option ‚Veränderung‘ Hände ändern ausgewählt Ereignis Feuer, sondern über Javascript nicht können Sie bearbeitbar Beispiel überprüfen 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> 

Also ich denke, das ist okay Ereignis manuell schießen mag:

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

das funktioniert nicht mehr in IE für mich in Selenium 2.3. Weißt du, ob es eine andere Problemumgehung gibt? – RSG

+0

@RSG Leider kenne ich keine andere Workaround :( –

+0

Dolch. Danke für die Antwort sowieso, ich werde die Suche fortsetzen. – RSG

1

Sie den Fokus setzen sollte zuerst:

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

Dieses Problem wird in IE-Browser

Verwandte Themen