もはやどのレイヤーが原因かわからないけど全部 IE8 の所為にしよう
どういうこと?
<input type="radio"> で onclick() 内の関数で submit している場合
<!DOCTYPE html> <head> <script> function ggg() { document.serif.submit(); } </script> </head> <body> <form name="serif" method="POST" action="/"> <label><input type="radio" name="hello" value="hoge" onclick="ggg();"/>Hoge</label> <label><input type="radio" name="hello" value="fuga" onclick="ggg();"/>Fuga</label> <label><input type="radio" name="hello" value="hago" onclick="ggg();"/>Hago</label> </form> <div id="area"><%= params[:hello] %></div> </body> </html>
| ブラウザ | div#area に値が表示されたかどうか |
|---|---|
| IE8(手動) | OK |
| IE9(手動) | OK |
| Firefox(手動) | OK |
| Chrome(手動) | OK |
| IE8(Selenium WebDriver) | NG |
| IE9(Selenium WebDriver) | OK |
| Firefox(Selenium WebDriver) | OK |
| Chrome(Selenium WebDriver) | OK |
結論
IE8 は無かったことにしよう
補足
今回みたいに onclick() の中で submit する形だと、POST に radio button のパラメータが入らないっぽい。
onclick()ではなく<input type="submit">だったらもちろんOKonclick()の submit 前にdocument.serif.hello.checked = trueみたいなことやってればOK- フェイントで
onchange()だとできるかなーと思ったらそれも駄目だった
補足2
検証した環境
- modern.IE の
IE8 - Win7及びIE9 - Win7 - ソースコードはこちら https://gist.github.com/gongo/5452375
- selenium-server-standalone-2.32.0
- 各種 Driver