· 

Seleniumをpowershellから使う(1)

 

webページの操作を自動化できるSelenium。これをpowershellから使おうっていう試み。色んな会社のシステムってWebブラウザを使ってることが多いんじゃないかと思う。で、クソ遅いとかシステムによって使用感が統一されていないとか色々不満があると思う。、、、知らんけど。いや、知っている。まじgmks。
で、Seleniumを使うと、RPAのようにPCを占有することもなくWebブラウザでの操作を自動化できるので、いくつかのシステムの連携もローカルでこなせるわけで、使わない手はない。ところで、RPAのはしり、UWSCが登場したのが1999年。2010年ごろマイブームが来たんだけど、PCを占有されるってので、使い方が難しいなーって思ってた。結局、ぼーっっと待ってるんよ。終わるのを。もちろんブラウザ以外のアプリも操作できるというRPAの利点はある。

で、参考サイトはこちら(https://qiita.com/_YuruTa_/items/91224e038ae565fb1a83)(いつも先人の足跡をたどっているだけなのに、えらそうなこと言うんじゃないって怒られそうやな、、、)。
まずは管理者モードでPowerShellを起動する。で、
install-module -name Selenium
って入力する。そすっと
こうなる。迷わず「Y」押してENTER。
なんか知らんけど、信頼されていないらしい。信頼を得るには地道な善行の積み重ねが必要だよなーと思いつつ、「Y」ENTER。そすっと、上のほうにこしょこしょ青い画面が出た後、何事もなかったようにプロンプトが表示される。(ここまででつまづいたら上記参考サイトをみるべし)、、で、たぶんこれでいいんだろう。
で、参考サイトに倣って、
get-command -module selenium
ってすると、なんと、
  • CommandType Name Version Source
  • ----------- ---- ------- ------
  • Alias Enter-SeUrl 3.0.1 selenium
  • Alias Find-SeElement 3.0.1 selenium
  • Alias Start-SeLegacyEdge 3.0.1 selenium
  • Function Clear-SeAlert 3.0.1 selenium
  • Function Get-SeCookie 3.0.1 selenium
  • Function Get-SeElement 3.0.1 selenium
  • Function Get-SeElementAttribute 3.0.1 selenium
  • Function Get-SeElementCssValue 3.0.1 selenium
  • Function Get-SeKeys 3.0.1 selenium
  • Function Get-SeSelectionOption 3.0.1 selenium
  • Function Get-SeWindow 3.0.1 selenium
  • Function Invoke-SeClick 3.0.1 selenium
  • Function Invoke-SeScreenshot 3.0.1 selenium
  • Function New-SeScreenshot 3.0.1 selenium
  • Function Open-SeUrl 3.0.1 selenium
  • Function Remove-SeCookie 3.0.1 selenium
  • Function Save-SeScreenshot 3.0.1 selenium
  • Function Send-SeClick 3.0.1 selenium
  • Function Send-SeKeys 3.0.1 selenium
  • Function SeOpen 3.0.1 selenium
  • Function SeShouldHave 3.0.1 selenium
  • Function Set-SeCookie 3.0.1 selenium
  • Function SeType 3.0.1 selenium
  • Function Start-SeChrome 3.0.1 selenium
  • Function Start-SeEdge 3.0.1 selenium
  • Function Start-SeFirefox 3.0.1 selenium
  • Function Start-SeInternetExplorer 3.0.1 selenium
  • Function Start-SeNewEdge 3.0.1 selenium
  • Function Start-SeRemote 3.0.1 selenium
  • Function Stop-SeDriver 3.0.1 selenium
  • Function Switch-SeFrame 3.0.1 selenium
  • Function Switch-SeWindow 3.0.1 selenium
ってなる。すなわち-AllowPrereleaseがないとSelenium3がインストールされる。まぁこれでチャレンジしてみるっス。で、web driverをとってくる。chromewebdriver.exeでぐぐると、ここ(https://developer.chrome.com/docs/chromedriver/downloads?hl=ja)がひっかかる。で、微妙にわかりにくいけど、
からの
からの
これを、コピーして、ブラウザのアドレスに貼り付けてダウンロード。
落ちてきたzipファイルの中からchromedriver.exeをよさげなところにコピペしておく。

さらに、google chromeブラウザの実行ファイルの場所を調べておく。だいたい「C:\Program Files\Google\Chrome\Application」にある。

では、普通にPowerrshellを起動する。で、例によって作業用のフォルダを作って、そこでvscodeを起動する。(mkdirとかcdとかした後、code .ってやる人は少数派だろうな、、、)

で、参考サイト通りにやると、はまる。seleniumに色々と教えてあげながら動かしてあげるといいらしい。なんじゃもんじゃやって、こんなかんじ。ファイル名はいつものようにいつ終わるかわからんstudy1.ps1。
なんちゃら_pathはPCによって違う(前述のように置いた場所やら調べた場所やらを書くんやで)。
  1. write-output "hello selenium!"
  2. $binary_path="C:\Program Files\Google\Chrome\Application\chrome.exe"
  3. $driver_path="C:\Users\hoge\Documents\work\powershell\selenium_study\chromedriver-win64-125.0.6422.141"
  4. $start_url="https://www.google.co.jp"
  5. $driver=start-sechrome -binarypath $binary_path -webdriverdirectory $driver_path
  6. enter-seurl -url $start_url -driver $driver
  7. $element=find-seelement -driver $driver -classname "gLFyf"
  8. send-sekeys -element $element -keys "sunday engineer"
  9. send-sekeys -element $element -keys "`n"
  10. start-sleep 5
  11. stop-sedriver -driver $driver
  12. write-output "completed"
で、vscodeの再生ボタン(2つあるうちの左が「実行」で右は「デバッグ」なので、左のほう)
を押すと。chromeが立ち上がって、勝手に検索して、勝手に終了する。ターミナルはこうなっている。
はいー。とりあえずうまくいったと思いますよー。

seleniumを使って、じゃんじゃん自動化や。ローコード・ノーコードくそくらえ。コードを書きまくるんや。そして惜しげもなく(というか恥ずかしげもなく)公開しまくる。オープンソース万歳!

、、、あ、どうやってelementを探すん?すなわち、なんで、
$element=find-seelement -driver $driver -classname "gLFyf"
で、検索のテキストボックスを指定できるのがわかるん?とかは次の機会に(あれば)。

だんだん人間としての品がなくなってきた気がする。いや、そもそも下賤なものでござりますゆえ。

コメントをお書きください

コメント: 5
  • #1

    ヒマナッツ (火曜日, 11 6月 2024 01:48)

    テキストボックスに何か入っている可能性があるってときは、テキストボックスにsend-sekeysする前に
    send-sekeys -element $element -keys "{{Control}}a"
    send-sekeys -element $element -keys "{{Delete}}"
    ってすると、まず消去してから新たな気持ちで入力できる。

  • #2

    ディグダ (日曜日, 16 6月 2024 19:03)

    地面ポケモン

  • #3

    繝・ぅ繧ー繝€ (月曜日, 30 9月 2024 17:55)

    蝨ー髱「繝昴こ繝「繝ウ

  • #4

    ディグダ (月曜日, 30 9月 2024 17:56)

    地面ポケモン

  • #5

    ディグダ (火曜日, 01 10月 2024 09:38)

    地面ポケモン