python - 如何通过python在移动仿真上截取完整的屏幕截图?
问题描述
我想用python截取一个移动网站的截图。我使用移动仿真来设置这个网站的宽度和高度。该网站很长,我对其进行了硬编码以获得宽度和高度。
由于宽度为 375,高度为 22000,所以我将它们设置在移动仿真中。但是,如果我这样做,我会收到错误消息“超时接收来自渲染器的消息”
我在这里有两个问题。
- 我在移动仿真中设置了固定的宽度和高度,这是正确的吗?特别是高度的值太大。
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)
解决方案
推荐阅读
- c# - 如何修复错误发布到天蓝色功能
- webpack - 如何将静态资产/图像包含在纤细的组件和 webpack 中?
- php - php:调用来自数组的对象的方法
- augmented-reality - 如何将 a-frame 对象定位到标记的左下角,并使其宽度等于标记的宽度?
- javascript - Lodash 设置数组的每个元素
- c# - 如何保持 c# 和 ardunio 通信同步?
- mysql - 时间格式 mi 和 mm 有什么区别?
- vue.js - Vue.js - 在 v-for 中过滤,如果 Array 实际上为空,如何处理
- jenkins - 在詹金斯奴隶之间复制文件在管道中
- python-3.x - 如何将变量 b 分配给字符串 a 的索引?