Selenium C#传递driver.PageSource到HTML Agility Pack报路径过长怎么解决
问题原因
你调用了Html Agility Pack的Load()方法,这个方法的入参要求是本地HTML文件的路径,而你传入的driver.PageSource是完整的HTML字符串,方法会把整个HTML内容当成文件路径去解析,自然会触发路径过长的报错。Python的BeautifulSoup默认支持直接传入HTML字符串,所以相同逻辑不会报错。
解决方案
把报错行的Load()方法替换为专门用于加载HTML字符串的LoadHtml()方法即可:
// 原来的错误写法 // htmlDoc.Load(driver.PageSource); // 修改后的正确写法 htmlDoc.LoadHtml(driver.PageSource);
可选优化建议
你代码里的Thread.Sleep(3000)是固定等待,容易受网络波动影响导致页面还没加载完就执行后续操作,可以替换成Selenium的显式等待,逻辑更稳定:
// 等待搜索结果加载完成,判断目标元素出现 WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(d => d.FindElements(By.ClassName("grid-address")).Count > 0);
内容的提问来源于stack exchange,提问作者Quintessa
相关产品推荐
相关产品推荐

