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が有効ですね!