我有一个测试,需要从网上下载文件,点击一个按钮。
在非无头模式下,测试能够通过。
然而,当我在headless中运行它时,下载文件超时失败。
以下是一些详细信息:
- selenium 化物版本:5.25.0
- Chrome驱动程序版本:111.0.5563.64
我的配置:
- 非无头运行:
Configuration.timeout = 20000;
Configuration.fileDownload = FOLDER;
- 无头赛跑:
Configuration.headless = true;
Configuration.timeout = 20000;
Configuration.fileDownload = FOLDER;
其他选项是默认的,如下载文件夹build/downloads
和其余的。
我的Selenide代码下载文件:
@SneakyThrows
public String downloadFile() {
return downloadButton.download(10000, withExtension("pdf")).getAbsolutePath();
}
按钮元素本身:
<button class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary" tabindex="0" type="button" test-id="download-button">
<span class="MuiButton-label">Download</span>
<span class="MuiTouchRipple-root"></span>
</button>
日志:
- 非无头:
13:20:09.959 INFO com.codeborne.selenide.impl.DownloadFileToFolder - Downloaded 1 files:
#1 {root}\build\downloads\1678792759151_10256_1\109fc116-cc8b-42ba-9d7b-20733276bf64.pdf
- 无头:
13:07:19.760 INFO com.codeborne.selenide.impl.DownloadFileToFolder - Downloaded 0 files:
13:07:19.778 INFO com.codeborne.selenide.impl.WindowsCloser - File has been opened in a new window, let's close 1 new windows
13:07:19.778 INFO com.codeborne.selenide.impl.WindowsCloser - Let's close B0C0F608D49BC5C008986B2B7AB210C5
我已经尝试了类似主题中描述的所有解决方案,添加了很多不同的chrome选项组合,但没有运气。
任何帮助感激不尽!
1条答案
按热度按时间8ehkhllq1#
好吧,我找到了一个理由。
最近Chromium驱动程序更改了其无头模式配置。
您可以在此答案中找到更多详细信息:https://stackoverflow.com/a/73840130/11830541
正是我的问题是,我使用旧的Selenide版本,使用传统的
--headless
参数,而创建无头选项,但它必须是--headless-new
自Chrome 109。为了使这个工作与旧版本的Selenide我使用了这样的变通方案:
--headless=new
arg中的其他选项与使用Configuration.headless = true;
时Selenide添加的选项相同**注:**最好将Selenide依赖项升级到正确处理此Chromium驱动程序更改的较新版本:https://github.com/selenide/selenide/blob/main/CHANGELOG.md#6120-released-24022023