如何在C#中通过Puppeteer-Sharp和XPath获取所有li元素的innerText
提取Playwright中元素的innerText值
你当前代码里用GetPropertiesAsync("value")的方式不对,而且没有正确处理异步操作。要提取<li>元素的innerText,直接用Playwright提供的InnerTextAsync()或TextContentAsync()方法即可——前者获取可见文本,后者获取包括隐藏内容在内的所有文本,按需选择。
遍历方式实现
string xpath = "//h1[@title='UL']//li"; IElementHandle[] has = await ((IPage)pageTabel).XPathAsync(xpath); List<string> liInnerTexts = new List<string>(); foreach (var liElement in has) { // 获取可见文本(对应innerText) string text = await liElement.InnerTextAsync(); liInnerTexts.Add(text); }
并行处理简化实现
如果想提高效率,用Task.WhenAll并行处理所有元素:
string xpath = "//h1[@title='UL']//li"; IElementHandle[] has = await ((IPage)pageTabel).XPathAsync(xpath); string[] liInnerTexts = await Task.WhenAll(has.Select(li => li.InnerTextAsync()));
注意:GetPropertiesAsync是用来获取元素所有属性集合的方法,不适合直接提取单个文本内容;而且所有异步方法必须加await才能拿到实际结果。
内容的提问来源于stack exchange,提问作者PeterSchwennesen
相关产品推荐
相关产品推荐

