Вы можете заставить его работать без каких-либо хаков, например, запустить скрипт, который запускает событие изменения.
Selenium генерирует JavaScript из вашего кода и вставляет его в браузер, а затем запускает его. Но если вы измените выбранную опцию любого выбора через JavaScript, это никогда не сработает.
Я сделал небольшой пример, чтобы понять это (если вы измените выбранную опцию с помощью события «изменить» руками, но не через javascript. Вы можете проверить работоспособный пример здесь ):
<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>
Так что я думаю, что можно запускать событие вручную, например:
$this->runScript("$('#edit-era-code-select').change()");