投稿

4月, 2022の投稿を表示しています

C#でSeleniumをやめてPlaywrightを使ってみた4

イメージ
Playwrightでもう少し試したこと 拡張機能を使いたいのにダメ? 拡張機能を使えるようにする 拡張機能が消える? 拡張機能を使うためのコード例 要素の存在チェックがしたい CountAsync()で0が返ってこない罠 要素の存在チェックの方法の結論 JavaScriptを使うときの書き方 Playwrightを使いまくって作ったアプリ Playwrightでもう少し試したこと その3でやめようと思ったが、もう少し書きたいことがあったので、書いておく。 「拡張機能」「要素の存在確認」「JavaScriptの実行」についてのメモメモ。 拡張機能を使いたいのにダメ? まずは拡張機能について。 SeleniumのときはChromeの拡張機能はそのまま使えた。 特に何も設定しなくても、立ち上げるChromeの--user-data-dirを適切に設定しておけば、そこでインストールした拡張機能はSeleniumで起動させたChromeでも普通に使えた。 しかし、Playwrightはそうはいかない。 拡張機能をインストールしようとするとこんな感じでエラーが発生。入れられない。 このメッセージが出る理由とか対処法を検索すると、プロファイル作り直せばできたとかなんとかというページばかりだったが、消してもだめ。たどりついた結果は「chrome://version」にあった。 立ち上げのオプションに「--disable-extensions」が入っている。そりゃ、だめだわ。これ外せないかとおもったけど、外す方法は分からず。 その代わり、どうやら「--disable-extensions-except」をつかって特定の拡張機能だけは使えるようにすることはできそう。とはいえ、「--disable-extensions-except」を指定するためには先に拡張機能をインストールしていなければならない。 拡張機能を使えるようにする と、いうことで、まずはコマンドプロンプトを立ち上げて、Chromeを「--user-data-dir」指定して起動する。 枠内をクリックするとソースがクリップボードにコピーされます "C:\Program Files\Google\

C#でSeleniumをやめてPlaywrightを使ってみた3

イメージ
Playwright Inspectorで自動コード生成できるみたいよ テスト用プロジェクトの作成 pwshのインストール Playwright Inspectorの設定 実行、操作の記録 デバッグトレースを試す Inspectorの実際(追記 2022/5/10) Playwright Inspectorで自動コード生成できるみたいよ 前回 、InfoseekのトップページにログインするコードをDevToolsで頑張ってやる方法を試してみたが、もっと簡単な方法がある。 ま、当たり前かもしれないけど、自動コード生成ツールを使う方法ね。 と、いうわけで今回は Playwright Inspector の使い方のはなし。 Playwright Inspector はブラウザの操作を記録して、C#、Python、 node.jsなどのスクリプトを自動生成してくれるツール。単純にそれだけではなく、作ったコードをプログラミングプラットフォームのようにデバッグ実行も可能で、ステップトレースできてしまうという、超便利なツール。 Seleniumとかでもこういうツールあったみたいだけど、自分は全く使ってなくて、もっぱらDevToolsと比較にらめっこしていたという、超原始人でした。 と、いうことで以下の手順で試してみよう。 ・テスト用のプロジェクトを用意して、デバッグビルドする。 ・pwshのインストール ・Playwright Inspectorの設定 ・実行、操作の記録 ・デバッグトレースを試す テスト用プロジェクトの作成 テスト用のプロジェクトを用意して、デバッグビルドする。 とりあえず、ブラウザ開くだけのプロジェクトを用意する。 前回作ったものの最小限で良いけど、せっかく作ったので使えるところは使って。NuGetでMicrosoft.Playwrightをインストールしてブラウザを立ち上げるコードを書く。プロジェクト名は今回は「Playwrightテスト2」で作っている。 枠内をクリックするとソースがクリップボードにコピーされます using System; using System.Collections.Generic; using System.ComponentModel; usi

C#でSeleniumをやめてPlaywrightを使ってみた2

イメージ
起動時タブが2つ開くのをなおす 起動時複数タブが開く設定の時の動作 ブラウザを閉じたら、アプリも終了させるようにする 新しいタブを開く、閉じる 指定したタブにフォーカスする ページのスクリーンショットを試す 自動処理を作ってみる(想定するページの動き) 自動処理を作ってみる(トップページ) 自動処理を作ってみる(ユーザーIDの入力) 自動処理を作ってみる(パスワードの入力) 自動処理を作ってみる(まとめ) 起動時タブが2つ開くのをなおす 前回 、立ち上げ時に2つタブが開き、2つ目のほうに指示したURLのページが表示されるという現象が起きた。 枠内をクリックするとソースがクリップボードにコピーされます var ページ = await ブラウザコンテキスト.NewPageAsync(); 理由は↑この行らしい。NewPageしているので、起動時にabout:blankのほかに、新しいページを開こうとしているということ。Chromeではかならず立ち上げ時に何らかのページはある。 枠内をクリックするとソースがクリップボードにコピーされます var ページ = ブラウザコンテキスト. Pages[0] ; と、いうことで、単純にPagesの配列の[0]は保証されているんではないか。 はい、うまくいきました。 起動時複数タブが開く設定の時の動作 あとは、Chromeの設定によっては最初から複数タブが開かれるときがある。 起動時の設定で、前回開いていたページを開くとか、特定のページセットを開くを設定している場合。上ではbingとか、yahooを開いたまま前回のページを開く設定で終了して、再立ち上げしてみる。 最初は、閉じる前のページ+about:blankのタブが追加されて開き、about:blankにフォーカスが当たっている状態だった。yahoo.comの読み込み終了までしばらく待ったかと思ったら、yahoo.comのタブがgoogle.comに移動した。 これは…Pages[]って左のタブから順番ではない? ページ.GotoAsync()のあとに以下を付け加えて同じ状況を再現してみる。 枠内をクリックする

Androidのエミュレータを比較 Nox、BlueStacks、LD、Memu、Mumu、Wakuoo、Gameloopなど。

イメージ
Androidのエミュレータ比較をしてみるよ Nox Player 7.0.2.6 (Android 7) Nox Player 7.0.2.6 (Android 9) BlueStacks 5.7.1064 (Android 7) BlueStacks 5.7.1064 (Android 9) LD Player 4.0.79 (Android 7) LD Player 9.0.13 (Android 9) Memu Player 7.6.6 (Android 7) MuMu Player 9.0.1.0 (Android 9) MuMu Player 11.0.0.0 (Android 11) Wakuoo 1.0.0.9000 (Android 9) Gameloop 1000218456 (Android 7) まとめ Androidのエミュレータ比較をしてみるよ Androidエミュレータを比較しているようなサイトがあるようで意外とないと思わない? 機能の比較とかはどうでもいいんですよ。性能とかはエミュレータ作っている会社が発表してたりして、本当にどうなの?ってところが不明だし、自分の使いたい機能があるの?ってのもよくわからない。 と、いうわけで2022年4月時点の人柱環境でやってみるよ。もう。 比較ポイントは以下。 1.Geekbench5.4.4の性能比較 2.Geekbench5.4.4使用時のPCのCPU使用率、メモリの使用率適当比較 3.Adbがつかえるか確認 4.楽天Carアプリ1.14.0でRoot化判定されるか確認 5.その他 4.はVer1.13.0まではBluestacks4で普通に使えていたんだけど、Ver1.14.0になったらRoot化していないのにエミュレータだとRoot化を検知するという仕様に代わったっぽい。たぶん。そしてRoot化している実機ではRoot化検知されないという謎仕様。 それぞれ64bitのexeがあるものは64bit版。可能な限り4CPU設定、RAM4GB設定。内部解像度は1920x1080でタブレット式。Android 7以上