首页 > 解决方案 > 如何在使用 selenium 截屏之前等待元素完全加载

问题描述

我有一个代码,用于从谷歌下载几张图片,在我通过它的源下载它之前,但它花了很多时间,所以我开始使用 selenium .screenshot_as_base64 因为我的代码已经有一个系统来保存 base64进入图像,问题是,一段时间后,代码运行速度比图像加载快,所以代码开始保存空白图像截图,所以我需要知道是否有办法在元素完全加载之前等待截图。

这是我的帮助代码:

def search(self,keyword,n):

    element = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="sbtc"]/div/div[2]/input')))
    actionChains = ActionChains(self.driver)
    actionChains.move_to_element(element).click().perform()
    actionChains.move_to_element(element).send_keys(keyword,Keys.RETURN).perform()
    element = self.wait.until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="islrg"]/div[1]/div[1]/a[1]/div[1]/img')))
    actionChains.move_to_element(element).click().perform()
    for i in range(n):
        element = self.wait.until(
            EC.presence_of_element_located((By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img')))
        src = element.screenshot_as_base64
        self.download_base(src, keyword)
        print(src)
        element = self.wait.until(
            EC.presence_of_element_located(
                (By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[1]/a[3]')))
        actionChains.move_to_element(element).click().perform()
    self.index = 0
    self.driver.quit()

标签: pythonseleniumselenium-webdriverbase64

解决方案


或许换个思路,获取图片url,直接使用下载工具下载图片。节省了很多麻烦,请参阅示例: 使用 selenium python 下载图像


推荐阅读