Thanks Driven Life

日々是感謝

IE8 と Selenium Webdriver と onclick と呪われし input type="radio"

もはやどのレイヤーが原因かわからないけど全部 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"> だったらもちろんOK
  • onclick() の submit 前に document.serif.hello.checked = true みたいなことやってればOK
  • フェイントで onchange() だとできるかなーと思ったらそれも駄目だった

補足2

検証した環境