Pythonはじめに2018年5月頃に突然、高校の友達Aから連絡が来て食事をすることになった。Aさんはとあるお店を持つまで出世していて、業務を自動化して欲しいというお話だった。1件目はスプレッドシートだったのでGASを書いて納品。2件目はWebブラウザをimacrosで自動化している作業があるのだが、そのプログラムの作成者がメンテナンスできなくなったため、対応して欲しいとのこと。提案して、合意してもらえた。外注していたので、これをいじれる人間になれば社内価値があがるかもと思い、Pythonに変更した。(相談済み)初めてPython、Seleniumでちゃんと納品できるものを作成したので、そこで得たTips集を残そうと思う。間違っていることも多くあると思いますが、何卒ご容赦くださいsleepではなくWebDriverWaitを使おうSeleniumは所詮プログラムなので、ボタンが読み込み終わる前にボタンを押してしまうことがあります。僕の場合はラズパイ&Wifiでの納品だったので、読み込み速度は不安定です。そこでsleepを使いたくなってしまいますが、SeleniumにはWebDriverWaitという便利なものがあります。一つのメソッド内に2回以上WebDriverWaitを記述すると、上手くいかない場合があります。Hoge().do()上記の書き方だと2つ目以降が動かず、Timeoutしてしまう時があります。別のメソッドに分けるとうまくいきます。'別ウィンドウで開く'))).click()self.browser.switch_to_window(self.browser.window_handles[1])WebDriverのwindow_handlesは立ち上がってるブラウザを配列として持っている。switch_to_windowで参照するウィンドウを変えることができる。自動化実行→閉じる→自動化実行→閉じる→...のような処理を行いたい場合、close()だと自動化→閉じる→何も起きない。quit()で困ったことはないので、基本quit()でいいんじゃないかと思う。WebDriverには使う時に接続しようWebDriverへの接続をインスタンス生成時に行っていました。Hoge(v).main()上記のようなコードだったため、自動化コードを実行するタイミングではなく、プログラムが起動したタイミングでWebDriverと接続をしていました。起動時に100件以上インスタンスが作成され、接続を行い重くなってしまいました。当たり前のことですが、実行するタイミングで接続するようにしましょう。追記Seleniumは、ページ内に表示されていないもの?はクリックできないときがあるみたい。そこで解決として、JavaScriptでスクロールするという方法がある。2018でも、僕の場合は設定ファイルによってクリックする場所が違う。初期状態で表示されていない場合もある。スクロールで一番下までみたいのはできない。場所によってスクロールする場所を決めたりする方法もあるが面倒。僕は、ウィドウサイズを大きくすることで解決した。scheduleschedule.every().monday.at('21:00').do(実行したい関数)最後に初めてのPython&Seleniumのため、間違っている部分は多くあると思います。変なところ、質問・ご意見などありましたら、Twitterにご連絡くdさい。(1)はてなブログをはじめよう!kurowasi2525さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。