Ich habe ein bisschen geschrieben, weil ich es brauchte.
Ich gehe von dieser Art der Konfiguration aus.
.
├── data
│ └── urls.csv
├── utilities
│ └── read_csv.py
└── test_screenshot.py
Es ist ein Prozess, die in der URL-Spalte von csv geschriebene URL zu öffnen, einen Screenshot zu erstellen und sie zu öffnen, um einen Screenshot zu erstellen.
Die Breite ist auf 1920px festgelegt, es ist jedoch möglich, sowohl das Scrollen als auch die Höhe zu unterstützen.
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
Es hat zwei Spalten, die Spalte "id" und die Spalte "url". id
wird auch im Namen der Screenshot-Datei verwendet.
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
Ich habe tatsächlich versucht, es zu verwenden, aber ich konnte es nicht im Vollbildmodus auf einer Site anzeigen, die sich bewegte, indem ich JS vollständig nutzte.
Wahrscheinlich nicht auf diese Methode beschränkt, ich denke, es ist ziemlich streng.
Recommended Posts