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



我最近开始使用硒。

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

上传时,

浏览器提交表单,只有在导航页面时才会执行下一步操作。

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

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

我正在使用ChromeOptionsDesiredCapabilities来设置不同的属性。

webDriver = new ChromeDriver(chromeDesiredCapabilities);

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);

我知道这是 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())

最新更新