问题描述
我无法使用 playwright 自动化从浏览器下载文件。
我正在使用 C# 语言进行自动化。
我已经使用 acceptDownload 创建了浏览器上下文,并提供了文件下载的目录路径。基本上代码停留在 RunAndWaitForDownloadAsync 方法中,之后会发生注意。
请在下面找到我用来下载文件的内容。
//While creating browser context
var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(new browserTypeLaunchOptions()
{
Headless = false,DownloadsPath = Directory.GetCurrentDirectory()
});
var context = await browser.NewContextAsync(new browserNewContextOptions() { AcceptDownloads = true });
//For file download used below code.
var download = await _page.RunAndWaitForDownloadAsync(async () =>
{
await _page.ClickAsync("#btnId");
},new PageRunAndWaitForDownloadOptions() { Timeout = 10000 });
var tmpDir = Directory.GetCurrentDirectory();
string userPath = Path.Combine(tmpDir,"download.docx");
await download.SaveAsAsync(userPath);
string path = await download.PathAsync();
Assert.True(new FileInfo(path).Exists);
//One more option tried as below.
var downloadTask = _page.WaitForDownloadAsync();
await WhenAll(downloadTask,_page.ClickAsync("#btnSubmission")).ConfigureAwait(false);
var download = downloadTask.Result;
var tmpDir = Directory.GetCurrentDirectory();
string userPath = Path.Combine(tmpDir,"download.docx");
await download.SaveAsAsync(userPath);
string path = await download.PathAsync();
Assert.True(new FileInfo(path).Exists);
//Supporting method
public static async Task<T> WhenAll<T>(Task<T> task1,Task task2)
{
await Task.WhenAll(task1,task2).ConfigureAwait(false);
return task1.Result;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)