見出し画像

SeleniumからPlaywrightへ移行すべきか@2022/8/21

以前、SeleniumでBasic認証で困った話、書きました。

今日は、それの続編です。


Playwrightとは?

これについて、Seleniumでやろうとするから、Basic認証が厄介なわけで、PuppeteerとかPlaywrightとか別のやつを使えば回避可能かもしれません。PlaywrightはPuppeteerから派生したものだそうです。こいつらは、Chromeを直接操作する感じです。Seleniumだって操作できてるじゃんか!と思われそうですが、ChromeやEdgeなどChromium専用のDevTools Protocolというものを扱えるということで、Seleniumではいじれない所までいじれたりするようです。Basic認証周りも行けそうです。

Seleniumでも、Selenium本体に統合されてないだけで、DevTools Protocolを操作するモジュールは同梱されてはいますけど、それを使っても、Basic認証を安全で手軽に回避する方法が分からなかった。。

Firefox対応は?

ただ、Firefoxについては、製品版のFirefoxについては、PuppeteerとPlaywrightいずれも無理だそうです。PuppeteerとかPlaywright専用にビルドしたFirefoxなら操作可能だそうです。とは言え、Chromeと同程度にいじれるのかは不明です。もしかしたら、そこはSeleniumと同等レベルなのかも。。それだけでもいじれれば十分でしょうけど。。

製品版のFirefoxはいじれないということなので、Firefox ESRという長期サポート版を使ってもらってるケースでの品質保証とかはできないですね。まぁ、普通は最新版のみで十分でしょうけど。。

移行しようか考え中

私もPlaywrightとかに移行したほうがいいのかな?私の仕事では、独自にSeleniumをラップしたようなフレームワークを作ってやっているので、フレームワーク側だけ修正すれば、移行できそうな気はします。ラップとかせずにSeleniumのコードをベタで書いてる場合は、既存のコードの移行は面倒過ぎてほぼ無理でしょうけど。。

いつから気付いてた?

ちなみに、Puppeteerについては、その存在について1年くらい前(2021年秋ごろ)には気付いてました。ただ、その時は、ほとんどSeleniumで自作フレームワーク部分ができてましたし、Chromeのみの対応と書いてあったので、まだ、Firefoxを切っていいのかどうかも分からないし、ということで、Puppeteerで行けるかどうかは分からない感じでした。

しかし、PlaywrightならFirefox行けるみたいなんで、アリかもしれないです。Playwrightのバージョン1.0.0が出たのは2年前の2020年5月のようですが、私がPlaywrightに気付いたのは、先月(2022年7月)になってからです。求人サイト見たら、こんなの使ってるよ~って書いてる会社があって。。まぁ、私も、アンテナもっと張ってたら、早く気付けたのかもしれないですけど、基本的に独りで仕事してますし、そもそも、そんなにやりたいと思ってやってるわけでもなく、嫌がらせに仕事干すために、やらなくてもいいことをやらされてるみたいな状況なので、特に調べてませんでした。

それに、Seleniumは基本的にJavaでいじってたので、それをNodeJS(TypeScript)に移行するだけでも、それなりにチャレンジでしたしね。NodeJSに移行してみると、NodeJSの世界では、PuppeteerやPlaywrightがあった、ということなんですよね。

というわけで

時間ができたら、Playwrightに移行できればする方向で考えてます。基本的に、時間は作れるはずなので、既存のコードも含めて、移行しようと思えば、全部できそうな気はしてます。

余談

しかし、Playwrightのロゴってキモいですね。趣味悪いです。作ってる人がひねくれてるのかな?

つづく。。

2022/8/24 追記

とは思ったものの、既存のやつの入れ替えは、やめとこうかな。既存のSeleniumのやつも、製品版のFirefoxが利用できるとか、Firefox ESRが選べるとか、メリットもあるし、今、パソコンにインストールされてるChromeがそのまま使えるというメリットもあるので、それはそのまま置いといて、別にPlaywrightをラップしたフレームワーク作ろうかな。

ラップしてやりたいことは、画面の到達確認とか、clickしようとしたのが早過ぎた場合どうするかの調整とか、後から調整を入れる余地を持たせるということです。メソッド名は同じにして、同じように使えるけど、ラップされてる、ということです。

Playwrightでコード生成もできるようだけど、生成したlocatorで取れる画面要素がユニークであるとか、具体的にどれが取れてるかの確認って、やり方どうなるんだろう。XPathならChrome拡張が色々あるから、それ使えば確認できるけど、Playwright専用のlocatorだと困りそうな。。それで、実は2個取れてたりしたら、誤作動になりそうだし。。そこも要調査。


この記事が気に入ったらサポートをしてみませんか?