我无法理解这个问题的本质。我提供了我所拥有的堆栈跟踪:
kestrel.service - ASP.NET Core Application running on Ubuntu
Loaded: loaded (/etc/systemd/system/kestrel.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2017-08-29 14:34:18 BRT; 7s ago
Main PID: 2356 (dotnet)
Tasks: 25
Memory: 173.9M
CPU: 6.913s
CGroup: /system.slice/kestrel.service
??2356 /usr/bin/dotnet /var/www/publish/Abp.Web.Mvc.dll
Aug 29 14:34:18 ubuntu systemd[1]: Started ASP.NET Core Application running on Ubuntu.
Aug 29 14:34:20 ubuntu dotnet-example[2356]: : Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository[50]
Aug 29 14:34:20 ubuntu dotnet-example[2356]: Using an in-memory repository. Keys will not be persisted to storage.
Aug 29 14:34:20 ubuntu …Run Code Online (Sandbox Code Playgroud) 我试图以与Puppeteer在NodeJS中相同的方式连接到Chromium 。
在NodeJS中,这看起来非常简单。您向stdio数组添加了另外两个参数,并且有了管道。
我无法在Puppeteer-Sharp中实现相同的逻辑。我花了一些时间在这里阅读许多问题和答案。我读到有关AnonymousPipeServerStream的信息,但并不高兴。
这是一个我无法使其工作的示例:
AnonymousPipeServerStream streamReader = new AnonymousPipeServerStream(PipeDirection.In, HandleInheritability.Inheritable);
AnonymousPipeServerStream streamWriter = new AnonymousPipeServerStream(PipeDirection.Out, HandleInheritability.Inheritable);
var chromeProcess = new Process();
chromeProcess.EnableRaisingEvents = true;
chromeProcess.StartInfo.UseShellExecute = false;
chromeProcess.StartInfo.FileName = "/.local-chromium/MacOS-536395/chrome-mac/Chromium.app/Contents/MacOS/Chromium";
chromeProcess.StartInfo.Arguments =
"--MANY-MANY-ARGUMENTS " +
"--remote-debugging-pipe " +
"--user-data-dir=/var/folders/0k/4qzqprl541b74ddz4wwj_ph40000gn/T/mz0trgjc.vlj " +
"--no-sandbox " +
"--disable-dev-shm-usage " +
streamReader.GetClientHandleAsString() +
streamWriter.GetClientHandleAsString();
chromeProcess.Start();
streamReader.DisposeLocalCopyOfClientHandle();
streamWriter.DisposeLocalCopyOfClientHandle();
Task task = Task.Factory.StartNew(async () =>
{
var reader = new StreamReader(streamReader);
while (true)
{
var response = await …Run Code Online (Sandbox Code Playgroud) 我创建了一个全新的 Web 应用程序 .NET Full Framework 4.7.2,添加了 Application Insights 快照收集器,但快照没有被推送到服务器。
我什至没有得到Don't see the snapshot? troubleshoot他们在这里提到的链接。
我使用 .NET Core 应用程序测试了我的集成密钥,它按预期工作,我什至得到了%TEMP%\Dumps64他们在该文档中提到的日志。
当我使用 .NET Framework 应用程序时,我在 %TEMP% 文件夹中没有看到任何活动。正在将异常推送到 Application Insights,因此集成密钥有效并且正在捕获异常。
这些是我添加的包:
<package id="Microsoft.ApplicationInsights" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.SnapshotCollector" version="1.3.3" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.TraceListener" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.Web" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.WindowsServer" version="2.9.1" targetFramework="net472" />
<package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.9.1" targetFramework="net472" />
Run Code Online (Sandbox Code Playgroud)
这就是我的 …
我正在尝试检查og:image源是否存在。如果我想在评估函数中调用异步方法,则会出现Error: Evaluation failed: [object Object]错误。
Error: Evaluation failed: [object Object]
at ExecutionContext._evaluateInternal (.../node_modules/puppeteer/lib/ExecutionContext.js:122:13)
at processTicksAndRejections (internal/process/task_queues.js:89:5)
at async ExecutionContext.evaluate (.../node_modules/puppeteer/lib/ExecutionContext.js:48:12)
-- ASYNC --
at ExecutionContext.<anonymous> (.../node_modules/puppeteer/lib/helper.js:111:15)
at DOMWorld.evaluate (.../node_modules/puppeteer/lib/DOMWorld.js:112:20)
at processTicksAndRejections (internal/process/task_queues.js:89:5)
-- ASYNC --
at Frame.<anonymous> (.../node_modules/puppeteer/lib/helper.js:111:15)
at Page.evaluate (.../node_modules/puppeteer/lib/Page.js:827:43)
at Page.<anonymous> (.../node_modules/puppeteer/lib/helper.js:112:23)
at run (/Users/andrejgajdos/devel/link-preview/app.js:195:28)
at processTicksAndRejections (internal/process/task_queues.js:89:5)
Run Code Online (Sandbox Code Playgroud)
应用程序.sj
const puppeteer = require("puppeteer");
const util = require('util');
const urlExists = util.promisify(require('url-exists'));
const run = async () => {
try {
const browser …Run Code Online (Sandbox Code Playgroud) 进行一些网络爬行。
有人可以向我解释一下,以下之间有什么区别(如果有的话):
--window-size=${width},${height}
与
page.setViewport({width,height});
--
我想知道使用第一种方法相对于第二种方法是否有任何优势。
例如,在主机看来,如果我使用半随机宽度/高度(即从合理值列表中选择),第一个是否会像选择随机用户代理一样为我提供任何熵优势?
第二种方法,“setViewport”方法,只是一个客户端的东西,用于在想要获取屏幕截图的情况下渲染实际页面?或者,它是否也通知/向主机提供有关性质的足够信息我的虚拟计算机分辨率...
非常感谢。
NH
const playwright = require("playwright");
(async () => {
const browsers = ["chromium", "firefox", "webkit"];
for (const browserType of browsers) {
const browser = await playwright[browserType].launch({args: ['--no-sandbox']});
const context = await browser.newContext();
const page = await context.newPage("http://whatsmyuseragent.org/");
await page.screenshot({ path: `example-${browserType}.png` });
}
})();
Run Code Online (Sandbox Code Playgroud)
运行此脚本后,我得到 UnhandledPromiseRejectionWarning: Error: Firefox revision is not download. 在控制台中运行“npm install”或“yarn install”。如何解决?
我正在使用puppeteer-core并连接到我自己的 chrome 安装。这工作正常,但如何在当前活动选项卡上执行命令?如何获得它的参考?
const wsChromeEndpointurl = 'ws://127.0.0.1:9222/devtools/browser/12345';
const browser = await puppeteer.connect({
browserWSEndpoint: wsChromeEndpointurl
});
const page = <active tab> // what do I need here?
Run Code Online (Sandbox Code Playgroud)
(我的目标是做一些事情,比如手动登录网站,然后让我们puppeteer接管。所以我真的很想使用puppeteer-core)
我将一些剧作家测试从 js 中的 Visual Studio 代码移植到使用 xuint 的 Visual Studio C#。
我似乎无法让 Expect 命令在 Visual Studio 中工作。
在 javascript 项目中,我将执行以下操作来检查元素是否包含一些文本:
await expect(page.locator('elementtofind')).toContainText('myText');
Run Code Online (Sandbox Code Playgroud)
在 C# 中,如果我写同样的东西,我会在expect命令上得到“名称‘标识符’在当前上下文中不存在”错误
在 JS 项目中我的导入语句是
import { test, expect } from '@playwright/test';
Run Code Online (Sandbox Code Playgroud)
在 C# 项目中我使用:
using Microsoft.Playwright;
Run Code Online (Sandbox Code Playgroud)
其中似乎不包含期望
作为临时解决方法,我在 C# 中执行以下操作以获得相同的结果
var item1 = page.Locator("elementtofind");
Assert.Equal("myText", await item1.InnerTextAsync());
Run Code Online (Sandbox Code Playgroud)
但想在我的测试中使用预期功能。
有谁知道我如何在我的项目中实现这一点?
我正在尝试使用 Puppeteer 导航到 URL 并从 Chrome 开发人员工具的网络选项卡中提取指标。例如,导航到此页面会显示以下网络信息,并捕获总共 47 个请求。

但是,我正在尝试使用以下代码获取这些指标:
import { Browser, Page } from "puppeteer";
const puppeteer = require('puppeteer');
async function run() {
const browser: Browser = await puppeteer.launch({
headless: false,
defaultViewport: null
});
const page: Page = await browser.newPage();
await page.goto("/sf/ask/2131917511/");
let performanceTiming = JSON.parse(
await page.evaluate(() => JSON.stringify(window.performance.getEntries()))
);
console.log(performanceTiming);
}
run();
Run Code Online (Sandbox Code Playgroud)
但是,当我performanceTiming查看该对象时,它只有 34 个项目:

因此,我的问题是:
performance.getEntries()显示的请求数量不同?performance.getEntries()显示所有请求而不是仅显示其中的一部分?我想用 puppeteer 自动填写表格。我填写第一个输入,然后单击一个按钮,然后创建一个具有焦点的新输入字段。
我怎样才能选择这个输入?我可以使用 document.activeElement 吗?如何使用?
let newActivity = 'button.new_activity'
await page.waitForSelector(newActivity)
await page.click(newActivity)
// find active/focused input
await page.type(focusedInput, 'message')
Run Code Online (Sandbox Code Playgroud) javascript ×6
node.js ×5
puppeteer ×5
c# ×2
playwright ×2
asp.net ×1
asp.net-core ×1
autofill ×1
azure ×1
pipe ×1
process ×1
ubuntu ×1
web-scraping ×1