すごくハマったのでメモ
システム raspberry pi 4B
RAM 4GB
OS Ubuntu mate 20.04 64bit
通常通りにchromium-browserからインストールしようとすると以下のエラー
$ sudo apt install chromium-browser パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ chromium-chromedriver が見つかりません
指定したレポジトリにはありそうだが、なぜかインストールできず。
そのため、手動でインストールする。
ports.ubuntu.com ubuntuのレポジトリから適したソースをダウンロードする。 今回、raspberry pi のアーキテクチャはarmのため、arm64, armhfが適切だが arm64は動作しなかったのでarmhfをインストールする。 現在(2022/02/05)で最新のversion 80 をインストールする。
$ curl -O http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-browser_80.0.3987.163-0ubuntu1_arm64.deb $ curl -O http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-chromedriver_80.0.3987.163-0ubuntu1_arm64.deb $ ls chromium-browser_80.0.3987.163-0ubuntu1_arm64.deb chromium-chromedriver_80.0.3987.163-0ubuntu1_arm64.deb $ sudo dpkg -i chromium-browser_80.0.3987.163-0ubuntu1_arm64.deb chromium-chromedriver_80.0.3987.163-0ubuntu1_arm64.deb $ which chromedriver /usr/bin/chromedriver $ chromedriver --version ChromeDriver 98.0.4758.80 (7f0488e8ba0d8e019187c6325a16c29d9b7f4989-refs/branch-heads/4758@{#972})
python のソースコードで確認した ソースはこちらの方のものを流用して、一部修正しました。 irukanobox.blogspot.com
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions from selenium.webdriver.firefox.options import Options from selenium import webdriver if __name__ == '__main__': url = 'https://www.google.com' print('start') options = ChromeOptions() options.add_argument('-headless') options.add_argument('--no-sandbox') options.add_argument('--disable-gpu') #このオプションを外すとクラッシュするため必須 options.add_argument('--disable-dev-shm-usage') driver = Chrome(executable_path='/usr/bin/chromedriver', options=options) print('get url') driver.get(url) # 画面表示を最大5秒まで待つ driver.implicitly_wait(5) # 検索ボックスのエレメントを取得(inputタグのname属性はq) elem = driver.find_element_by_name('q') # 検索ボックス内のテキストをクリア elem.clear() # 検索ワードを入力 elem.send_keys('Raspberry Pi') # 検索ボタンがクリックできるようになるまで最大10秒待つ wait = WebDriverWait(driver, 10) input = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, "//input[@value='Google 検索']"))) if input.get_attribute('type') == 'submit': input.click() else: print('Failed to find submit button.') # 検索結果がなければ「No results found.」と表示する assert "No results found." not in driver.page_source # スクリーンショットを保存 driver.save_screenshot('chromium_search.png') driver.close()
スクリーンショットが作成されていることを確認して終了。
python3 test.py