使用selenium时的网页加载不全问题

问题遇到的现象和发生背景

使用selenium访问https://smart.zj121.com/radarNew/index.html对地图调整中心位置再缩放,最后再执行截屏操作,设置了一个死循环,所以会在网页更新之后再次执行上述操作,但是时常截屏的图片发现网页加载不全,加了time.sleep(6)或者driver.implicitly_wait(5)也会有这种问题,显示等待的话不知道应该选取哪个元素,请问是否有其他办法可以解决,或者减少这种情况的出现。

问题相关代码,请勿粘贴截图
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import TimeoutException
import time
 
def scprt():
    service = Service("C:/Users/bsb0/anaconda3/Scripts/chromedriver")
    service.start()
    options = webdriver.ChromeOptions()
    options.add_argument('--no-sandbox') #解决DevToolsActivePort文件不存在的报错,让Chrome在root权限下
    options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
    options.add_argument('window-size=4096x3200')#等号处不要加空格,否则报错
    options.add_argument('--headless')
    driver = webdriver.Chrome(options = options)
    # visibility_element = EC.visibility_of_element_located(locator)
    driver.maximize_window()
    try:
        driver.get('https://smart.zj121.com/radarNew/index.html')
        driver.execute_script("map.setView({lat:27.8,lng:120.1}, 9.5)")
        time.sleep(4)
        driver.get_screenshot_as_file("d:/radar_prt/prt1.png")
        driver.execute_script("map.setView({lat:28.8,lng:120.8}, 8.5)")
        time.sleep(6)
        driver.get_screenshot_as_file("d:/radar_prt/prt2.png")
    except TimeoutException:
        time.sleep(45)
        driver.get('https://smart.zj121.com/radarNew/index.html')
        driver.execute_script("map.setView({lat:27.8,lng:120.1}, 9.5)")
        time.sleep(4)
        driver.get_screenshot_as_file("d:/radar_prt/prt1.png")
        driver.execute_script("map.setView({lat:28.8,lng:120.8}, 8.5)")
        time.sleep(6)
        driver.get_screenshot_as_file("d:/radar_prt/prt2.png")
        driver.quit()
        Service.stop()


运行结果及报错内容

img

img

可以尝试一下更新一下版本,说不好是兼容性的问题。有的时候你用的网络也有这种问题

看你问题的截图,应该是渲染问题,不然你设置的sleep时间也够长了,感觉不应该渲染不完全。建议取消无头模式,观察一下截图不完整的具体问题,如果是渲染问题,你可以选择增大等待时间,或者用
WebDriverWait,等待指定元素加载完毕后,再继续执行后续代码。
ps:我试了一下你的代码,我本地截图是完整的

加载这个,其实就可以类比平时看一些地图软件地图时的情况,它加载不出来也是就出现类似情况,可能是渲染显示时的问题,渲染显示与等待时间的问题。

Driver.maximize_window()

在程序中,卡顿页面之前加一个最大化窗口指令:
Driver.maximize_window()

如果你不是用GPU加速的话,而你又要求窗口很大,chrome的显示会有限制,建议使用gpu加速试试,即注释掉下面的命令:

options.add_argument('--disable-gpu')

https://ask.csdn.net/questions/752336?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-2.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-2.pc_feed_download_top3ask

源代码没加载出来么