J'ai écrit un peu parce que j'en avais besoin.
Je suppose ce genre de configuration.
.
├── data
│ └── urls.csv
├── utilities
│ └── read_csv.py
└── test_screenshot.py
C'est un processus pour ouvrir l'URL écrite dans la colonne url de csv et prendre une capture d'écran, et l'ouvrir pour prendre une capture d'écran.
La largeur est fixée à 1920px, mais il est possible de prendre en charge le défilement ainsi que la hauteur.
test_screenshot.py
import time
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from utilities.read_csv import read_csv_data
class TestScreenshot():
datalist = read_csv_data("./data/urls.csv")
@classmethod
def setup_class(cls):
options = Options()
options.add_argument('--headless')
options.add_argument('--hide-scrollbars')
cls.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
cls.driver.maximize_window()
@pytest.mark.parametrize("id, url", datalist)
def test_reserve_multi(self, id, url):
driver = self.driver
driver.get(url)
time.sleep(3)
page_height = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(1920, page_height)
driver.save_screenshot(id + '.png')
CSV
Il a deux colonnes, la colonne ʻid et la colonne ʻurl
. ʻId` est également utilisé dans le nom du fichier de capture d'écran.
urls.csv
id,url
1,https://www.hoge.co.jp/
2,https://www.hoge.co.jp/pageA/
3,https://www.hoge.co.jp/pageB/
4,https://www.hoge.co.jp/pageC/
5,https://www.hoge.co.jp/pageD/
read_csv.py
import csv
def read_csv_data(csv_path):
rows = []
with open(str(csv_path), encoding="utf-8") as csv_data:
content = csv.reader(csv_data)
next(content, None)
for row in content:
rows.append(row)
print(rows)
return rows
> pytest test_screenshot.py
J'ai en fait essayé de l'utiliser, mais je ne pouvais pas l'obtenir en plein écran sur un site qui bougeait en utilisant pleinement JS.
Probablement pas limité à cette méthode, je pense que c'est assez strict.
Recommended Posts