前提・実現したいこと
社内のポータルサイトからSeleniumを使って掲示板の更新情報を取得しローカルにスクリーンショットとして保存したい
ゆくゆくはそのスクリーンショットをOCRをかけて検索できるようにしたい
(ちなみに理想は更新情報自体をテキストとしてローカルに保存したいが、難しそうなのでスクリーンショットで妥協している)
起きている問題
Seleniumで更新情報をChromeで表示させるところまではできたが、pyautoguiでスクリーンショットをとっても、所望のページ(更新情報)のスクリーンショットではなく、ポータルサイトのログインページのスクリーンショットが保存されてしまう。
Window 1
Tab A = ポータルサイトのログイン画面
Tab B = 掲示板の更新情報が一覧で表示ている画面
Window 2
Tab A = 掲示板の更新情報が詳細に表示されている画面
2Aのスクリーンショットを撮りたいのに、1Aのスクリーンショットが保存されるという状態です。
アクティブな(最前面に表示されている)タブは2Aなのに…
書いたコード
from selenium import webdriver import time import datetime import pyautogui as auto ID = '' PASS = '' from linebot import LineBotApi from linebot.models import TextSendMessage class test: def scrape(self): driver = webdriver.Chrome() print('ログイン中') driver.get('https://') #1Aが表示されています #ログイン処理 time.sleep(2) driver.find_element_by_id('idField').send_keys(ID) driver.find_element_by_id('passwordField').send_keys(PASS) driver.find_element_by_xpath('//*[@id="loginButton"]').click() print('ログイン成功') #1Bが表示されています time.sleep(5) notification_position = (464, 356) auto.moveTo(notification_position) auto.click(notification_position) #2Aが表示されています time.sleep(5) #カレントページのスクリーンショットを取得し現在時刻をタイトルにして保存 filename = 'test_{0:%Y%m%d}.png'.format(datetime.datetime.now()) takeScreenshot = auto.screenshot() takeScreenshot.save(r '/Users/user/Programming/testing/{}'.format(filename)) t = test() t.scrape()
試したこと
Seleniumで1A, 1B, 2Aのタブをすべて当初のタブ(1A)で開く方法を探しましたが見つかりません。
pyautoguiとSeleniumのスクリーンショットを試しましたが両方とも挙動は同じでした。
回答1件
あなたの回答
tips
プレビュー