「Selenium」に関する日記

Selenium

自分用ツールでSelenium使ってなんかごにょごにょしてる。
本来コンソールアプリのための機能なんだけど、ログイン周りを中心に、自動化のためにプログラムに書き起こすのがしんどい部分があって、だったら毎回手動操作したほうが早いよねということで、手動操作しやすいようにGUIアプリとして使ってます。
そうしたら、GUIにはGUIならではの厄介な点があって、むしろコンソールより多くて、マルチスレッド回り、いろいろ調整してたりしました。
ブラウザという外部アプリを使っている都合上、マルチスレッドどころかマルチプロセスですしね。

Selenium

HTML5のページだけバリデーションかけたいんなら<!DOCTYPE html>で判別すればいいじゃないかと思ったら!
DOCTYPE宣言はPageSourceから省かれている!!!

DOCTYPEに頼らずHTML5を判別する方法はないものか。
DOCTYPE宣言だけHTML5で、中身がHTML4.01なのは問題だから、それはエラーとして検出したい。
つまり、タグを見てHTML4.01じゃないからHTML5っていう判定はできない。

それはそうとして、「--blink-settings=imagesEnabled=false」のオプションを付けたら速くなった。
見たいのはHTMLだけなので、画像を読み込む必要はない。

LocalCrawler

自分のサイトのテスト環境の全ページに全力でアクセスしまくるプログラムによって外部アクセスが起きないように、サイト側で、テスト環境なら外部リソースを読み込まないようにしました。
そんでもって、似たようなページに連続アクセスしないように、レーベンシュタイン距離の離れたURLを選ぶようにしてみました。

LocalCrawler

自分のサイトのテスト環境の全ページに全力でアクセスしまくるプログラム作成。
しかし、本来は自分のサイトの外に出ないはずが、スクリプトや画像の埋め込みとして外へのリクエストが発生していたのでした。
アンパンマンDBとかは自動生成されるページも多いので時間がかかり、その対策も必要そうです。

大神とHeadless Chrome

大神


花咲谷。
うん、入ったばかりなので、妖怪だらけで泥だらけ。

Headless Chrome

Headless Chromeでファイルをダウンロードする - sambaiz-net
Seleniumとかで使うHeadless Chromeのダウンロード自動化。
以前調べていて方法が見つからなかったんだけど、Page.setDownloadBehaviorを使えば良さそうね。
まあ、今は自動ダウンロードしたいものはなくなってしまったんだけど。
いつか必要になったら思い出そう。

Selenium

まだまだ改良の余地はあるけど、とりあえず運用開始。
テストというよりは、日常の些細なタスク用ですな。

ドラゴンクエスト10とSelenium

ドラゴンクエスト10

とろけるチーズのラクレット
テンの日。
いつものアイテム回収と、とろけるチーズのラクレット…?
私の知っているラクレットと違うような…。

Selenium

ちょっと前からやっていたSeleniumを使ったプロジェクトは、一定の成果を出せそうなところまでできました。
最後に.NET CoreのTLSの扱いというSeleniumと無関係なところで詰まったりしましたが。
.NET Frameworkの小手先の回避手段が使えなかったんですね…。

Selenium

JavaScriptで一瞬になりました。リンクのURL全抽出です。
for(var p=document.getElementsByTagName('a'),q=[],i=0;i<p.length;i++)q.push(p[i].href);return q

あろ、関係ないけど、サーバー契約更新してきました。

Selenium

全要素FindElementsしてループで処理するとえらく時間がかかりますね…。
ここらはJavaScriptと組み合わせて高速化できる部分がありそうです。

Selenium

Seleniumを使ってとある作業を自動化中…。
ログインが含まれるのと、メンテナンスで作業不可能になるタイミングがあるので、そのこともある程度見越した設計にしています。