gpt4 book ai didi

java - 无法使用 Selenium ChromeDriver SerenityBDD 设置默认下载路径

转载 作者:行者123 更新时间:2023-12-01 22:50:48 27 4
gpt4 key购买 nike

问题:

  1. ChromeDriver 未将文件下载到“所需”路径

  2. ChromeDriver 无法在“ headless ”模式下下载任何文件。

POM

        <java.version>1.8</java.version>
<serenity.version>1.8.20</serenity.version>
<serenity.jbehave.version>1.35.0</serenity.jbehave.version>
<chromedriver-dep.version>77.0.3865.40</chromedriver-dep.version>

SerenityBDD Chrome 首选项 (serenity.properties):

chrome_preferences.profile.default_content_settings.popups=0 
chrome_preferences.download.default_directory=./files/
chrome_preferences.download.prompt_for_download=false
chrome_preferences.download.directory_upgrade=true
chrome_preferences.pdfjs.disabled=true

我尝试过的其他方法,手动设置 ChromeOptions。

@Step
public CouponSearchActions waitABitAndClickOnExport() {
pageRefreshAndCheckCouponStatus();
if (couponViewPage.getCouponStatusIsCreated().isVisible()) {
setExperimentalChromeOption();
couponViewPage.getExportCouponButton().clickAndWait();
}
return this;
}

private ChromeOptions setExperimentalChromeOption() {
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", System.getProperty("user.dir"));

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
return new ChromeOptions();
}

最佳答案

Try to update your chrome and chromedriver.

第一季度 ChromeDriver 无法在“ headless ”模式下下载任何文件。

答:使用 chromedriver 服务

WebDriver driver;
ChromeDriverService driverService = ChromeDriverService.createDefaultService();
try {
driver = new ChromeDriver(driverService, options);
}catch(Throwable t) {
APP_LOGS.error(t.getMessage());
t.printStackTrace();
}
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);


/**** DOWNLOAD HACK ON HEADLESS BROWSERS *****/
Map<String, Object> commandParams = new HashMap<>();
commandParams.put("cmd", "Page.setDownloadBehavior");
Map<String, String> params = new HashMap<>();
params.put("behavior", "allow");
params.put("downloadPath", downloadFilepath);
commandParams.put("params", params);
ObjectMapper objectMapper = new ObjectMapper();
HttpClient httpClient = HttpClientBuilder.create().build();
try {
String command = objectMapper.writeValueAsString(commandParams);
String u = driverService.getUrl().toString() + "/session/" + ((RemoteWebDriver)driver).getSessionId() + "/chromium/send_command";
APP_LOGS.debug(u);
HttpPost request = new HttpPost(u);
request.addHeader("content-type", "application/json");
request.setEntity(new StringEntity(command));
httpClient.execute(request);
}catch (Exception e) {
APP_LOGS.debug(e.getMessage());
}

注意:

将 Chrome/ChromeDriver 更新到最新版本。

此问题已在 ChromeDriver 77.0.3865.40 (2019-08-20) 中得到解决。 https://chromedriver.storage.googleapis.com/77.0.3865.40/notes.txt

Resolved issue 2454: Headless mode doesn't save file downloads [Pri-2]

关于java - 无法使用 Selenium ChromeDriver SerenityBDD 设置默认下载路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com