2

これは古典的な C# から F# への変換だと思いますが、よく理解していません。

クイックスタートを使用してブラウザを自動化しようとしています

https://playwright.dev/dotnet/docs/intro

C#コードは

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("http://www.bing.com");
await page.ScreenshotAsync(path: outputFile);

始めましたが、すでに少し迷っています。

let playwright: Playwright = PlaywrightSharp.Playwright.CreateAsync() |> Async.AwaitTask

タイプが正しくありません。ここで何が間違っていますか?

Error   FS0001  This expression was expected to have type
    'Playwright'    
but here has type
    'Async<IPlaywright>'    
4

3 に答える 3

1

F# 6 の時点で、タスクはタスク計算式を通じてネイティブにサポートされるようになりました。Async.AwaitTask構文は、各let!use!、またはdo!バインディングを呼び出す必要がなくなったことを除いて、Brian Berns の回答の非同期計算式とほぼ同じになります。

let screenshotTask =
  task {
    use! playwright = Playwright.CreateAsync ()
    use! browser = playwright.Chromium.LaunchAsync ()
    let! page = browser.NewPageAsync ()
    let! _ = page.GotoAsync "https://www.bing.com"
    let! _ = page.ScreenshotAsync (PageScreenshotOptions(Path = "screenshot.png"))
    return ()
  }
screenshotTask.Wait ()
于 2022-01-06T12:55:08.600 に答える