Web上のフォーム(Googleフォーム、Microsoft Forms)で自動入力する方法(Bot) Chrome XPathの取得方法

Google Chrome

Google Chrome一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

Windows 行頭削除、行末削除を一瞬で行う方法(HOME,End)
  • キー操作が今までの30%程度効率UPします。
  • スプレッドシートに限らず、ほとんどのWindowsアプリで使用できます。
  • マウスだけで行または段落の選択ができるようになります。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    • Web上のフォームに自動的に入力することができます。
    • Google Chrome使用時にXPathの取得方法もわかります。

    というか、Web上のほとんどのフォームに対し、自動的に
    入力することができるのです。

    こんな感じです。

     

     

    Googleフォームの場合は、こちらでOKです↓

    通常の(編集権がない)Googleフォームに初期値を表示させる方法(Excel,Gスプレッドシート)
  • 編集権がないGoogleフォームに初期値を自由自在に埋め込むことができるようになります。
  • 毎日同じようなフォームを送る場合大活躍します。
  •  

     

     

     

     

    逆に、知らないと

    毎日の報告にMicrosoft Formsを開いて
    日付を選択して、自分の名前を選択して、。。。。と
    毎日、毎日、同じ項目を入力する必要があります。

    なので、サクッとマスターして

    その、ロボットのような作業は、Botに
    やらせましょう。

    と素晴らしいサイトがありました。

    ■Python(パイソン)のインストール

    ■formsのボット

    これで、Microsoft Formsは、バッチリです。

    Pythonが何なのかわからなくても大丈夫です。

    Pythonが実行できる環境に、ファイルを作成
    以下の内容をコピペします。
    そして、拡張子を‘py’に変更します。

    そうすることで、以下のフォームに自動的に入力するBotが
    できてしまいます。

    フォーム入力テスト
    フォームに値を入れるテスト

     

     

    動画

    準備中

    ※作成途中なのですが、フォルダのプライペートな名称にぼかしを追加したり
    エディタの説明が必要になったりと本題以外のところに時間がとられ、
    果たしてこの動画のニーズはあるのか?
    と感じているところです。

    準備

    PythonやChrome用のドライバなどいろいろと準備する必要があります。

    動画を見ながらゆっくりとやってみてください。

    以下は、動画内で使用しているリンクです。

     

     

     

     

     

    Step1.

    Pythonのインストール

    非公式Pythonダウンロードリンク - Python downloads

     

    Pythonの実行

    command プロンプトから「python」と入力し動作確認します。

    python
    PowerShellの環境設定

    PowerShellを起動し一回だけ実行します。

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

     

    これでPythonのインストールが完了さらにです。

    Seleniumの導入

     

    pip install selenium

     

     

    Chromeにドライバをインストール

    ChromeDriver - WebDriver for Chrome - Downloads
    Current Releases If you are using Chrome version 115 or newer, please consult the Chrome for Testing availability dashboard. This page provides convenient JSON ...
    Chromeのバージョンを確認する

     

     

     

    Pythonのソース

    from selenium import webdriver
    import time
    # datetimeモジュールを使った現在の日付と時刻の取得
    from datetime import datetime, timedelta
    
    nowadays = datetime.now()
    str_dt = nowadays.strftime('%Y/%m/%d')
    print(str_dt)
    
    
    
    driver = webdriver.Chrome("chromedriver.exe")
    driver.get("https://docs.google.com/forms/d/e/1FAIpQLSekVc2ry0tI7H2i775lli8xX9MtvREV0BGQBH7oStlKSGypdA/viewform")
    
    #time.sleep(1)
    
    #パスを取得する
    #element = driver.find_element_by_xpath('')
    #文字入力する
    #element.send_keys("")
    #クリックする
    #element.click()
    
    
    
    
    
    #-------------------------------------------------
    #フォームに入力
    #-------------------------------------------------
    
    #1.メールアドレス
    element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[1]/div/div/div[2]/div/div[1]/div/div[1]/input')
    element.send_keys("abcefg@gmail.com")
    
    #2.名前
    element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div[1]/div/div[1]/input')
    element.send_keys("ひろし")
    
    #日付
    element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div[1]/div/div[1]/input')
    element.send_keys(str_dt)
    
    
    
    #今朝の体温
    element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[4]/div/div/div[2]/div/div[1]/div/div[1]/input')
    element.send_keys("36.5")
    
    #体調 (‘よい’を取得)
    element = driver.find_element_by_xpath('//*[@id="i22"]')
    element.click()
    
    #朝食に食べたもの
    element = driver.find_element_by_xpath('//*[@id="i39"]')
    element.click()
    
    
    #朝食に食べたもの
    #//*[@id="i54"]でも可
    element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[6]/div/div/div[2]/div[1]/div[6]/label/div/div[2]/div/span')
    element.click()
    
    
    #element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[6]/div/div/div[2]/div[1]/div[8]/div/div/div/div/div[1]/input')
    #element.send_keys("カレーライス")
    
    
    
    
    #driver.close()
    
    #exit()

    そして、自分用に変更してみてください。

     

    Pythonのプログラムの作成方法

    Step.0
    ① フォームのURLをコピーし以下の箇所にペーストします。

    xPathの取得

    Step1.

    Google chromeでターゲットのフォームを開きデベロッパーツールを開きます。

    ①画面右上の「|」→「その他のツール」→「デベロッパーツール」

     

     

     

     

    Ctrl+Shift+Cで、一気にDevToolsを起動しさらにカーソル位置のPathまで辿れます。

     

     

    Step2.
    ①「▼」をクリックし「回答を入力」が反転する箇所を絞り込んでいきます。
    (② Ctrl+F ->「メールアドレス」で検索し、ある程度絞り込みます。)
    ③「回答を入力」だけが反転する箇所を見つけます。

     

    Step3.

    ①「回答を入力」が反転しているpath上で右クリックします。
    ②「Copy」-「Copy XPath」をクリックします。

     

     

     

     

    ちなみにPythonの基本を学びたい場合は、こちら↓
    ※わたしもこれでサクッと楽しみながらスタディしました。

    https://prog-8.com/python/study/

     

     

    –2022/06/21追記–

    せっかく作ったスクリプトですが、動かなくなりました。

    原因を調べたところ、MS formsのxPathが変わったようです。

    再度取得し、直ったのですが、ちょっと微妙ですね。

     

     

    –2023/03/08 追記–

    結構、頻繁に動かなくなりますね。

    そんなときはChrome用のドライバを更新しましょう。

    ChromeDriver - WebDriver for Chrome - Downloads
    Current Releases If you are using Chrome version 115 or newer, please consult the Chrome for Testing availability dashboard. This page provides convenient JSON ...

     

     

    Windows版は以下のwin32.zip(64はなし)をダウンロードします。

     

    これを解凍してあなたがPythonをインストールした環境にコピーすればOKです。

     

     

     

     

     

     

     

    –2023/09/26 追記–

    新しいPCにPythonの環境を作ろうとしたのですがなぜか動作しません。

    AttributeError: 'WebDriver' object has no attribute

    のエラーが表示されます。

    いろいろ調べてようやくわかりました。

    seleniumのバージョン4.3.0から、find_element_by_系のメソッドが
    使えなくなったとのことです。

    えっ、そんなどでかい仕様変更ってありなのでしょうか?

    10本近く作成しているので、今さらすべて変更するのは大変です。

    seleniumのバージョンを落とせるとのこと

    まず、Seleniumのバージョンの確認

    pip list


    ※これは、4.1.0インストール後の画面です。

    pip install selenium==4.1.0

    で、4.1.0をインストールすればOKです。

    以下の記事を参考にしました。

     

     

    最後までご覧いただきありがとうございます。

    つぎはこちら

    AppData、Localフォルダを一瞬で開く方法(Windows)
  • あなたのPCのAppDataフォルダがどこにあるかがわかります。
  • さらにそれらのフォルダを一瞬で開くことができます。
  • Google Chrome一覧

    コメント

    タイトルとURLをコピーしました