PuppeteerSharp 17.0.0升级报错求助:XPath使用及API适配
PuppeteerSharp 17.0.0 升级问题解决方案
1. BrowserFetcher 相关定义缺失问题
10.1.4版本中的BrowserFetcher.DefaultChromiumRevision和RevisionInfo在17.0.0版本已调整:
- 获取默认Chromium版本:改用
Puppeteer.DefaultChromiumRevision静态属性 - 获取版本信息:调用
BrowserFetcher.GetRevisionInfoAsync(string revision)方法
示例代码:
// 旧版本写法 var revision = BrowserFetcher.DefaultChromiumRevision; var info = new BrowserFetcher().GetRevisionInfo(revision); // 新版本写法 var revision = Puppeteer.DefaultChromiumRevision; var info = await new BrowserFetcher().GetRevisionInfoAsync(revision);
2. WaitForXPathAsync 方法过时问题
17.0.0版本推荐使用Locator API替代过时的XPath等待方法,更贴合新版本API设计:
// 旧版本写法 await page.WaitForXPathAsync("//div[@id='target']"); // 新版本推荐写法 var locator = page.Locator("xpath=//div[@id='target']"); await locator.WaitForAsync(); // 仍可使用过时方法(不推荐长期保留) await page.WaitForXPathAsync("//div[@id='target']");
3. 启动浏览器提示找不到指定文件问题
新版本默认不再自动下载Chromium,需手动处理:
- 方法一:用BrowserFetcher提前下载Chromium
var fetcher = new BrowserFetcher(); await fetcher.DownloadAsync(Puppeteer.DefaultChromiumRevision); var browser = await Puppeteer.LaunchAsync(new LaunchOptions());
- 方法二:指定本地已安装的Chrome/Edge浏览器路径
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe" // 替换为实际安装路径 });
4. WaitForSelectorAsync 传入XPath提示无效选择器问题
WaitForSelectorAsync默认解析CSS选择器,使用XPath时必须添加xpath=前缀:
// 错误写法(直接传XPath字符串) await page.WaitForSelectorAsync("//div[@class='test']"); // 正确写法(添加xpath=前缀) await page.WaitForSelectorAsync("xpath=//div[@class='test']");
关于 XPath 定位的通用说明
新版本中page.XPathAsync(xpath)方法仍可正常使用,无需修改。如果业务代码大量依赖该方法,可继续保留,仅需调整上述提到的其他API即可。
内容的提问来源于stack exchange,提问作者PeterSchwennesen
相关产品推荐
相关产品推荐

