什么是以及如何知道Selenium中浏览器的默认屏幕截图窗口大小?

问题描述 投票:0回答:1

我运行下面的代码,在 Google Chrome、Microsoft Edge 和 Firefox 上截取 Django Admin 的 3 张屏幕截图。 *我使用 Djangopytest-djangoSelenium:

import os
import pytest
from selenium import webdriver

def take_screenshot(driver, name):
    # time.sleep(1)
    os.makedirs(os.path.join("screenshot", os.path.dirname(name)), exist_ok=True)
    driver.save_screenshot(os.path.join("screenshot", name))

@pytest.fixture(params=["chrome", "edge", "firefox"], scope="class")
def driver_init(request):
    if request.param == "chrome":
        web_driver = webdriver.Chrome()
        request.cls.browser = "chrome"
    if request.param == "edge":
        web_driver = webdriver.Edge()
        request.cls.browser = "edge"
    if request.param == "firefox":
        web_driver = webdriver.Firefox()
        request.cls.browser = "firefox"
    request.cls.driver = web_driver
    yield
    web_driver.close()

@pytest.mark.usefixtures("driver_init")
class Screenshot:
    def screenshot_admin(self, live_server):
        self.driver.get(("%s%s" % (live_server.url, "/admin/")))
        take_screenshot(self.driver, "admin/" + self.browser + ".png")

然后,我可以截取 3 张屏幕截图,根据浏览器的不同,它们具有不同的窗口大小,如下所示:

chrome.png

edge.png

firefox.png

那么,什么是以及如何知道 Selenium 中浏览器的默认屏幕截图窗口大小?

python django selenium-webdriver screenshot pytest-django
1个回答
0
投票

您可以使用 get_window_size() 来获取 Selenium 中浏览器的屏幕截图窗口大小,如下所示:


...

@pytest.mark.usefixtures("driver_init")
class Screenshot:
    def screenshot_admin(self, live_server):
        print(self.driver.get_window_size()) # Here
        self.driver.get(("%s%s" % (live_server.url, "/admin/")))
        take_screenshot(self.driver, "admin/" + self.browser + ".png")

输出:

$ pytest -q -rP
...
..                              [100%]
=============== PASSES ================ 
_ Screenshot.screenshot_admin[chrome] _ 
...
-------- Captured stdout call --------- 
{'width': 945, 'height': 1012}
__ Screenshot.screenshot_admin[edge] __ 
...
-------- Captured stdout call --------- 
{'width': 945, 'height': 1012}
_ Screenshot.screenshot_admin[firefox] _
...
-------- Captured stdout call --------- 
{'width': 1292, 'height': 934}
3 passed in 18.33s

此外,您还可以分别获得

width
height
,如下图:


...

@pytest.mark.usefixtures("driver_init")
class Screenshot:
    def screenshot_admin(self, live_server):
        print(self.driver.get_window_size().get('width')) # Here
        print(self.driver.get_window_size().get('height')) # Here
        print(self.driver.get_window_size()['width']) # Here
        print(self.driver.get_window_size()['height']) # Here
        self.driver.get(("%s%s" % (live_server.url, "/admin/")))
        take_screenshot(self.driver, "admin/" + self.browser + ".png")
© www.soinside.com 2019 - 2024. All rights reserved.