提问者:小点点

Selenium网络驱动程序获取文件下载和响应对象的百分比


我最近开始研究硒。

目前,我正在使用网络驱动程序下载和上传文件。

上传时,浏览器提交表单,下一步操作仅在页面导航时发生。

但对于下载,浏览器会继续下载文件并继续执行进一步的操作。

这里,需要下载文件的百分比,以便我可以等到下载完成。此外,有没有办法通过Selenium获取HTTPResponse对象来检查响应标头。

我正在使用ChromeOptionsDesiredCap能力来设置不同的属性。

webDriver=new ChromeDriver(chromeDesiredCap能力);

ChromeOptions chromeOptions = new ChromeOptions();
HashMap<String, Object> chromePreferences = new HashMap<String, Object>();
chromePreferences.put("profile.default_content_settings.popups", 0);
chromePreferences.put("download.default_directory", browserDownloadDirectoryPath);
chromePreferences.put("safebrowsing.enabled", "true");
chromeOptions.setExperimentalOption("prefs", chromePreferences);
chromeOptions.addArguments("--test-type");
chromeDesiredCapabilities = DesiredCapabilities.chrome();
chromeDesiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);

共1个答案

匿名用户

我知道这是3年前的帖子,但我想提供答案,以便帮助某人。

您可以使用chrome下载状态挑衅地获取文件下载的当前状态(我的意思是下载的百分比)。

下面是返回最新文件下载百分比的python实现。

def getDownLoadedPercentage():
    endTime = time.time() + 180
    while True:
        try:
            downloadPercentage = driver.execute_script(
                "return document.querySelector('downloads-manager').shadowRoot.querySelector('#downloadsList downloads-item').shadowRoot.querySelector('#progress').value")
            if downloadPercentage:
                return downloadPercentage
        except:
            pass
        time.sleep(1)
        if time.time() > endTime:
            break

当您需要知道下载的状态时,只需调用该方法,如下所示。

print(getDownLoadedPercentage())