多次下载同一文件时,无头模式和非无头模式具有不同的行为
Headless mode and non headless mode have different behavior when downloading same file multiple times
虽然我在非无头模式下多次下载文件(说“a.png”)然后它会在下载的文件夹中复制该文件(例如“a.png”和“ a(1).png").
但是
虽然我在 Headless 模式下多次下载文件(说“a.png”)然后它不会在下载的文件夹中复制该文件,而是使用最新文件更新(检查日期时间)并且只有一个文件存在。
知道为什么会出现这种不同的行为并感谢对此的解决方案
我试图测试在每次下载中,下载文件夹中的计数应该增加 1。
可以在以下位置找到测试脚本:https://gist.github.com/Anilkumar-Shrestha/a81b7b7a4381db54ae8bb9ab9bdf75b4
原因
根据你的实验,也根据我的经验:
Chrome 和 Headless Chrome 可能表现不同(出于多种原因)。我没有找到明确的文档,但在 chromedriver 会话启动期间提供的一些 Chrome 浏览器选项和首选项可能会被无头浏览器忽略,或者可能导致不同的行为(比如你的下载情况)。至少您可能会在 Whosebug 或 github 问题上找到几个相关问题。这可能会证实我的假设。
- Headless chrome + ignore-certificate-errors
- Selenium headless chrome error "Bootstrap's JavaScript requires jQuery"
- Selenium Java - moveToElement does not work in headless but works in chrome
- App that converts image to base64 string displays different results on browser's console when run in headed and headless mode. Does anyone know why?
- 等等
我看到的主要原因是Chrome基于Chromium并提供了很多调整和定制。但在 headless 模式下,似乎启动了纯 Chromium 浏览器(不是 Chrome)。
如何处理这种行为
我假设您可以使用 java 访问文件系统(基于您的代码示例)。
1 如果您只想验证文件内容,您可以随时在验证后删除下载的文件。
2 如果您需要保留所有文件,我建议您将新下载的文件移动到另一个目录并根据需要重命名。所以你会控制所有的文件名都是唯一的。
您可以使用 apache commons lib 来管理文件:
https://zetcode.com/java/fileutils/.
如果您 运行 并行测试,请尝试将测试与下载步骤保持在单个线程中,或者为每个浏览器使用唯一的下载目录,或者为下载操作实施同步。
虽然我在非无头模式下多次下载文件(说“a.png”)然后它会在下载的文件夹中复制该文件(例如“a.png”和“ a(1).png").
但是
虽然我在 Headless 模式下多次下载文件(说“a.png”)然后它不会在下载的文件夹中复制该文件,而是使用最新文件更新(检查日期时间)并且只有一个文件存在。
知道为什么会出现这种不同的行为并感谢对此的解决方案
我试图测试在每次下载中,下载文件夹中的计数应该增加 1。
可以在以下位置找到测试脚本:https://gist.github.com/Anilkumar-Shrestha/a81b7b7a4381db54ae8bb9ab9bdf75b4
原因
根据你的实验,也根据我的经验:
Chrome 和 Headless Chrome 可能表现不同(出于多种原因)。我没有找到明确的文档,但在 chromedriver 会话启动期间提供的一些 Chrome 浏览器选项和首选项可能会被无头浏览器忽略,或者可能导致不同的行为(比如你的下载情况)。至少您可能会在 Whosebug 或 github 问题上找到几个相关问题。这可能会证实我的假设。
- Headless chrome + ignore-certificate-errors
- Selenium headless chrome error "Bootstrap's JavaScript requires jQuery"
- Selenium Java - moveToElement does not work in headless but works in chrome
- App that converts image to base64 string displays different results on browser's console when run in headed and headless mode. Does anyone know why?
- 等等
我看到的主要原因是Chrome基于Chromium并提供了很多调整和定制。但在 headless 模式下,似乎启动了纯 Chromium 浏览器(不是 Chrome)。
如何处理这种行为
我假设您可以使用 java 访问文件系统(基于您的代码示例)。
1 如果您只想验证文件内容,您可以随时在验证后删除下载的文件。
2 如果您需要保留所有文件,我建议您将新下载的文件移动到另一个目录并根据需要重命名。所以你会控制所有的文件名都是唯一的。
您可以使用 apache commons lib 来管理文件: https://zetcode.com/java/fileutils/.
如果您 运行 并行测试,请尝试将测试与下载步骤保持在单个线程中,或者为每个浏览器使用唯一的下载目录,或者为下载操作实施同步。