0

puppeteer-sharp API 中的触摸屏只提供了一种方法:TapAsync。但我需要拖动(touchStart 和 touchEnd 和 touch move)。我怎样才能做到这一点?

4

1 回答 1

0

PuppeteerSharp 没有这些 API(因为 Puppppeteer 没有它们)。但是,您可以尝试以相同的方式将这些消息发送到浏览器TapAsync

这是TapAsync代码:

// Touches appear to be lost during the first frame after navigation.
// This waits a frame before sending the tap.
// @see https://crbug.com/613219
await _client.SendAsync("Runtime.evaluate", new RuntimeEvaluateRequest
{
    Expression = "new Promise(x => requestAnimationFrame(() => requestAnimationFrame(x)))",
    AwaitPromise = true
}).ConfigureAwait(false);

var touchPoints = new[] { new TouchPoint { X = Math.Round(x), Y = Math.Round(y) } };
await _client.SendAsync("Input.dispatchTouchEvent", new InputDispatchTouchEventRequest
{
    Type = "touchStart",
    TouchPoints = touchPoints,
    Modifiers = _keyboard.Modifiers
}).ConfigureAwait(false);

await _client.SendAsync("Input.dispatchTouchEvent", new InputDispatchTouchEventRequest
{
    Type = "touchEnd",
    TouchPoints = Array.Empty<TouchPoint>(),
    Modifiers = _keyboard.Modifiers
}).ConfigureAwait(false);

页面有一个公共属性Client。您可以使用该客户端来执行这些调用。

你可以在这里查看,Type 支持:touchStart、touchEnd、touchMove 和 touchCancel。

于 2020-06-05T14:45:57.707 回答