chrome(v66以降)でseleniumテストが動画の自動再生でハングする
条件
解決法
--autoplay-policy=no-user-gesture-required
を利用する。
具体的には
var webdriver = require('selenium-webdriver'); var chromeCapabilities = webdriver.Capabilities.chrome(); var chromeOptions = { 'args': ['--autoplay-policy=no-user-gesture-required'] }; chromeCapabilities.set('chromeOptions', chromeOptions); var driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();
概要
かねてから噂されていたらしい、Chromeの自動再生拒否のバージョンがついにやってきた。 (実装はちょっと前からされてたみたい、デフォルトにされたのが今回のアプデ)
seleniumでの設定方法でもつまずいたが、ブラウザ経由で自動再生のフラグを変更したいなら chrome://flags/#autoplay-policy
で操作する。
一応、以下の三種類が用意されている。
- No user gesture is required.
- User gesture is required for cross-origin iframes.
- Document user activation is required.
一ユーザーとしてはありがたい限りの機能だが、テストが落とされるのは困ったので共有したい。
ちなみに、IMEとやらでサイトごとに自動再生を許可するドメインを確定する仕組みがあるみたい。
ただ、自分のchrome://media-engagement
を見ても全部、拒否られてたのでよくわかんない。
自動再生拒否を回避してどうしても自動再生で動画を流したい下の公式行けばいいと思います。 developers.google.com
Qiitaに日本語で書いてあるのもあるみたい。 qiita.com
休日が開けたら、テストがtimeoutしてて月曜日から憂鬱な気分に振り回される人が少なくなるように祈ります。
参考: