dropdown menu, with walker

You have to tell the browser to change the address in some way.

A simple javascript solution is to put the item URL into the value attribute, and trigger the address change when the option is selected.

Replace:

$output = str_replace('<li', '<option', $output);

With:

$output = str_replace(
 '<li',
 '<option value="'.$item->url.'" onchange="window.location.href=this.value"',

 $output);