Selenium WebDriverでGoogleChromeを開き、拡張機能を起動してスクリーンショットを取得したい。
座標の取得については、いまどこポインタというツールが便利だった。
拡張機能のポップアップは通常のスクリーンショットに使用されるwebdriver.get_screenshot_as_fileだと取得できなかったため、pyautogui.screenshotで座標を指定して取得することにした。
スクリーンショットは簡易だが連番で取得するようにした。ソースは最後に置いたので参考にしてほしい。
今回のソースの課題としては、以下2点が挙げられる。
・座標値で処理を行っているため端末が異なる場合適切な場所をクリックできない
・chromeでログインしていない状態になっているので起動時に設定を追加した方がよい
実用に足る自動化処理を作成できるようになりたい。
- from pickle import TRUE
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service
- from webdriver_manager.chrome import ChromeDriverManager
- import pyautogui
- import time
- import os.path
- # 最新のドライバを取得する場合
- service = Service(executable_path=ChromeDriverManager().install())
- # 拡張機能のパスは\ではできないらしい
- EXTENSION_PATH = “D:/Source/Selenium/extension/TagAssistantLegacy/21.266.18_0.crx”
- options = webdriver.ChromeOptions()
- # f文字列(フォーマット文字列)
- options.add_argument(f‘service={service}’)
- options.add_extension(EXTENSION_PATH)
- # ドライバの自動設定と拡張機能の設定を同時に行う場合はカンマ区切りになるらしい
- driver = webdriver.Chrome(service=service, options=options)
- driver.set_window_position(0,0) # ブラウザの位置を左上に固定
- driver.set_window_size(800,600) # ブラウザのウィンドウサイズを固定
- # 操作開始
- driver.get(“https://www.google.co.jp”)
- #ページが完全にロードされるまで待つよう指定
- driver.set_page_load_timeout(2)
- # 拡張機能ボタンをクリック
- print(“extension button click”)
- pyautogui.click(1350, 120, 1, 1, ‘left’)
- # 固定値で待つ
- time.sleep(2)
- # ポップアップ内の要素をクリック
- print(“extension function click”)
- pyautogui.click(950, 400, 1, 1, ‘left’)
- time.sleep(2)
- # スクリーンショットを撮る
- # 同名ファイルのない連番を作成する(001.png-999.png)
- count = 1
- while True:
- fileName = “C:/Users/*username*/Downloads/” + str(count).zfill(3) + “.png”
- print(fileName)
- if not os.path.isfile(fileName) :
- break
- count += 1
- # 連番をファイル名に使用する
- # PCの表示スケールを2倍にしていたので、サイズを2倍にしたら丁度入った
- pyautogui.screenshot(fileName, region=(0, 0, 1600, 1300))
- driver.quit()
The following two tabs change content below.