質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

662閲覧

Raspberry pi 3 model B で selenium, schedule, gspread, oauth2client を使用してブラウザの操作をしたい

Koz1

総合スコア10

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/03/21 02:19

編集2022/03/21 11:44

前提

現在,ラズパイにてデジタルサイネージを実現させるために,Google Apps Script(GAS)でデプロイしたWebページを表示させるプログラムを作っています。
GASのプログラムはうまく動いているのですが,ラズパイのブラウザ表示がうまくいきません。1か月前はうまくいっていたのですが,ここ1週間はうまくいかず,おそらくChromium-browserとchromedriverのバージョンが最新のものだと動かないのではないか,という推測をしています。
OSを入れなおしたり,print文にてデバッグをしたりして試しましたが,seleniumによりブラウザを立ち上げるとブラウザが真っ白いまま動かなくなってしまいます。
そこで,Chromium-browserとchromedriverのバージョンを以前のものにしようとしました。browserの方は95にできたのですが,driverの方がどのような手順で95にすればいいか分からず,悩んでいます。
そもそも,違う理由でブラウザがうまく読み込めていない可能性もあるため,質問いたしました。どうぞよろしくお願いいたします。

実現したいこと

- 1. Raspberry pi 3 model B で selenium を使用してブラウザの操作をしたい
-   1.1. seleniumだけではなく,ライブラリschedule, gspread, oauth2clientも動かしたい
-   1.2.データの内容に応じて,プログラムの動きを変えるために,複数のライブラリが必要となる

- 2.上記した1を実行できれば問題ないが,実行できない場合はChromedriver95.0.4638.78をインストールしたい

発生している問題・エラーメッセージ

  • 下記のプログラムを動かすと,ブラウザが真っ白なままずっと読み込み中になってしまう
  • エラーメッセージは無い

該当のソースコード

python

1#!/usr/bin/env python 2# coding: utf-8 3 4import gspread 5from oauth2client.service_account import ServiceAccountCredentials 6from selenium import webdriver 7from selenium.webdriver.chrome.service import Service 8from selenium.webdriver.chrome.options import Options 9import schedule 10from time import sleep 11import datetime 12 13# スプレッドシート関連設定 14json_file = 'jsonファイルネーム' 15file_name = 'SpreadSheetファイルネーム' 16 17scope = ['https://spreadsheets.google.com/feeds', 18 'https://www.googleapis.com/auth/drive'] 19 20# スプレッドシートにアクセス 21credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scope) 22gc = gspread.authorize(credentials) 23sh = gc.open(file_name) 24 25# シートの選択 26wks = sh.get_worksheet(0) 27 28# 単一セル(A1)データ取得(GASから送られてきたファイル名の取得) 29element = wks.cell(1, 1).value 30 31# オプション設定 32options = Options() 33# 余計な表示を消去 34options.add_experimental_option("excludeSwitches", ['enable-automation']) 35# フルスクリーンでブラウザ起動 36options.add_argument("--start-fullscreen") 37# プロファイル設定 38profilefolder = '--user-data-dir=' + '/home/pi/.config/chromium/Profile 1' 39options.add_argument(profilefolder) 40 41driver = webdriver.Chrome(service=Service("/usr/lib/chromium-browser/chromedriver"), options=options) 42 43# URLを設定する 44url = "指定したWebサイトのURL" 45 46driver.get(url) 47 48# 定期実行する関数を準備 49def main(): 50 # URLを開く 51 driver.get(url) 52 # ページの更新 53 driver.refresh() 54 55# スケジュール登録(取得したファイル名に合わせてスケジュールを変更させる) 56if element == '': 57 schedule.every().days.at("01:05").do(main) 58 59else: 60 #from時刻の取得と1分加算し,定期時刻に入れる 61 fromtime = str(int(element[15:17])).zfill(2) + ':' + str(int(element[17:19])+1).zfill(2) 62 schedule.every().days.at(fromtime).do(main) 63 64 #to時刻の取得と1分加算し,定期時刻に入れる 65 totime = str(int(element[19:21])).zfill(2) + ':' + str(int(element[21:23])+1).zfill(2) 66 schedule.every().days.at(totime).do(fin) 67 68 69try: 70 71 while True: 72 schedule.run_pending() 73 74 sleep(5) 75 76 s = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') 77 78 print("待機中..." + s) 79 80# エラーが発生した時はエラーメッセージを吐き出す。 81except Exception as e: 82 print(e) 83 print("エラーが発生しました。") 84 85# 最後にドライバーを終了する 86finally: 87 88 driver.close()

試したこと

  • 上記プログラムの45行目当たりの,driver = webdriver.Chrome~の上まではprint文により,実行できていることを確認
  • その下からはコマンド上で何も出力されていないことを確認
  • 動いた時のchromium-browserとchromedriverのバージョンは95.0.4638.78であった
  • OSをlegacy(Buster)でインストールして,seleniumだけにしたプログラムは動いたが,oauth2clientやgspreadを含めたプログラムは動かなかった
  • chromedriverの置き場だと思われる,https://chromium.googlesource.com/chromium/src/+archive/refs/tags/95.0.4638.78.tar.gz からラズパイにデータをダウンロード
  • tar zvxf 95.0.4638.78.tar.gz コマンドにて解凍
  • 解凍したファイルをインストールしようとしたが,やり方が分からない

補足情報(FW/ツールのバージョンなど)

  • Raspberry pi 3 model B
  • OS: Raspbian GNU/Linux 11 (bullseye)
  • ブラウザ:chromium-browser 98.0.4758.106
  • chromium-chromedriver 98.0.4758.106
  • selenium 4.1.3
  • scedule 1.1.0
  • oauth2client 4.1.3
  • gspread 5.2.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問