pythonでChromeHeadless使ってスクショしてみた
RPAが流行っているみたいだけど。色々(コストの問題)とあって導入できないので、なんか解決につながるような方策ないかなぁと思っていたら。pythonでゴニョゴニョすればうまくいけば自分の労力のみでRPA入れられるんではないかと思って、調査。
その気になればEXCELからURLリストと拾ってくる項目名とか指定して、取得した値をEXCELに転記とかいうこともできるのではなかろうかと思って、少し試してみた。
まずはSIerさんが大好きなWebアプリのスクショを取る部分について試してみることにした。色々とアレンジがいるみたいなので、まずはGoogle検索で「yahoo」を検索した1ページ目のスクショを取得するとかいうサンプルを作ってみた。
まぁこれは色々と先人がやっているので、そいつをコピペっとしただけなので、またしてもゴミ記事を量産したわけですww
https://jitaku.work/it/os/linux/ubuntu/ipa/
https://qiita.com/shinsaka/items/37436e256c813d277d6d
https://qiita.com/tabimoba/items/4ea3404416142187e645
https://qiita.com/promitsu/items/4b915677e1d4e9e21ca2
https://qiita.com/derodero24/items/17f24ed59d4f5650b3f5
https://note.com/tamurasann/n/nb54c9ef245cf
とりあえず「operateBrawser」の中で操作したい動作をゴニョゴニョと書いて
操作の都度「screenShot」を呼び出していくという風にすれば自動操作して
スクショはできそうですな。
あれですよ。ブラウザをスクショしてアリバイ工作のための納品物を作るという
丁寧にやらないといけない作業に最適ですな。
こいつとEXCEL出力組み合わせたら、システムテストやりましたのアリバイ工作に
最適なのではないでしょうか。
まぁ、これ調べたのはもう少し別のことしたいからなのですがね。
その気になればEXCELからURLリストと拾ってくる項目名とか指定して、取得した値をEXCELに転記とかいうこともできるのではなかろうかと思って、少し試してみた。
まずはSIerさんが大好きなWebアプリのスクショを取る部分について試してみることにした。色々とアレンジがいるみたいなので、まずはGoogle検索で「yahoo」を検索した1ページ目のスクショを取得するとかいうサンプルを作ってみた。
まぁこれは色々と先人がやっているので、そいつをコピペっとしただけなので、またしてもゴミ記事を量産したわけですww
◆事前準備
1.Chromeインストールとフォントの準備
# Chrome Install $ curl https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - $ echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list $ sudo apt update $ sudo apt -y install google-chrome-stable # IPA Font Install $ sudo apt install -y fonts-ipafont $ fc-cache -fv $ fc-list | grep -i ipa
2.追加ライブラリのインストール
$ pip install --upgrade selenium $ pip install --upgrade chromedriver-binary $ pip install --upgrade pyvirtualdisplay
◆ソース
import chromedriver_binary
import datetime
from pyvirtualdisplay import Display
import subprocess
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
chrome_path = '/usr/bin/google-chrome'
def operateBrawser(driver, url):
driver.get(url)
#指定された要素(検索テキストボックス)がDOM上に現れるまで待機する
MAX_WAIT_TIME_SEC = 100
INPUT_BOX_CLASS_NAME = "gLFyf"
element = WebDriverWait(driver, MAX_WAIT_TIME_SEC).until(
EC.presence_of_element_located((By.CLASS_NAME,
INPUT_BOX_CLASS_NAME)))
#Google検索でyahooを検索する
search_box = driver.find_element_by_name("q")
search_box.send_keys('yahoo')
search_box.submit()
return driver
def screenShot(driver, filename):
w = driver.execute_script("return document.body.scrollWidth;")
h = driver.execute_script("return document.body.scrollHeight;")
driver.set_window_size(w,h)
driver.save_screenshot(filename)
return driver
def main():
options = webdriver.ChromeOptions()
options.binary_location = chrome_path
options.add_argument('--headless')
options.add_argument('disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)
#ブラウザで操作したいURLを指定
url = "https://google.co.jp/"
driver = operateBrawser(driver,url)
#スクリーンショット
current_time = datetime.datetime.today()
current_time_str = current_time.strftime("%Y%m%d%H%M%S")
file_name=(f'screenshot-full-{current_time_str}.png')
driver = screenShot(driver, file_name)
driver.quit()
if __name__ == '__main__':
main()
◆参照URL
https://qiita.com/memakura/items/20a02161fa7e18d8a693https://jitaku.work/it/os/linux/ubuntu/ipa/
https://qiita.com/shinsaka/items/37436e256c813d277d6d
https://qiita.com/tabimoba/items/4ea3404416142187e645
https://qiita.com/promitsu/items/4b915677e1d4e9e21ca2
https://qiita.com/derodero24/items/17f24ed59d4f5650b3f5
https://note.com/tamurasann/n/nb54c9ef245cf
操作の都度「screenShot」を呼び出していくという風にすれば自動操作して
スクショはできそうですな。
あれですよ。ブラウザをスクショしてアリバイ工作のための納品物を作るという
丁寧にやらないといけない作業に最適ですな。
こいつとEXCEL出力組み合わせたら、システムテストやりましたのアリバイ工作に
最適なのではないでしょうか。
まぁ、これ調べたのはもう少し別のことしたいからなのですがね。
コメント