首页 > 解决方案 > 如何通过python在移动仿真上截取完整的屏幕截图?

问题描述

我想用python截取一个移动网站的截图。我使用移动仿真来设置这个网站的宽度和高度。该网站很长,我对其进行了硬编码以获得宽度和高度。

由于宽度为 375,高度为 22000,所以我将它们设置在移动仿真中。但是,如果我这样做,我会收到错误消息“超时接收来自渲染器的消息”

我在这里有两个问题。

  1. 我在移动仿真中设置了固定的宽度和高度,这是正确的吗?特别是高度的值太大。
  2. driver.set_window_size(width, height-1800)关于这条线,我应该在这里使用driver.set_window_size(width, height)吗?

这是代码,请随时告诉我哪里错了。提前致谢!

def save_screenshot(url):
         mobile_emulation = {
            "deviceMetrics": { "width": 375, "height": 22000, "pixelRatio": 3.0 },
            "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) "
                         "AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile 
                          Safari/535.19" }
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
        chrome_options.add_argument("start-maximized")
        chrome_options.add_argument("enable-automation")
        chrome_options.add_argument("--headless")
        chrome_options.add_argument("--no-sandbox")
        chrome_options.add_argument("--disable-infobars")
        chrome_options.add_argument("--disable-dev-shm-usage")
        chrome_options.add_argument("--disable-browser-side-navigation")
        chrome_options.add_argument("--disable-gpu") 
        driver = webdriver.Chrome(chrome_options=chrome_options) 
        driver.get(url)

        driver.implicitly_wait(5)

        width = driver.execute_script("return document.documentElement.scrollWidth")
        height = driver.execute_script("return document.documentElement.scrollHeight")
        print(width,height)

        driver.set_window_size(width, height-1800)
        time.sleep(1)

        driver.save_screenshot(NAME)

标签: pythonseleniumselenium-webdriver

解决方案


推荐阅读