puppeteer-sharp API 中的触摸屏只提供了一种方法:TapAsync。但我需要拖动(touchStart 和 touchEnd 和 touch move)。我怎样才能做到这一点?
问问题
590 次
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 回答