PHPのSeleniumでreadonlyのinputに値を入れたい

Seleniumでブラウザを自動実行しているときに、Javascriptでカレンダーとかが起動して直接値を入力できないようにreadonlyになっているinputに値をそのまま打ち込みたいときがあります。

その時はSeleniumの関数、executeScriptを使ってreadonlyを消してしまいましょう。

このようなhtmlがあったとします。

<html>
  <body>
    <input id="expect-to-be-writable" value type="text" readonly="readonly">
  </body>
</html>

ここに値を打ち込みたい時は、PHPで

$this->driver->executeScript("document.getElementById('expect-to-be-writable').removeAttribute('readonly','readonly');");

のようにスクリプトを実行してreadonlyを解除してやると値が入力できるようになります! 他にもjavascriptで行いたい自動処理にはexecuteScriptが有効ですね!