我目前正在使用 AngleSharp 构建一个用于网络自动化的应用程序。我已成功登录网站,但使用 context.Active.QuerySelectorAll 找不到我要查找的元素。
我知道这可能是因为某些 JavaScript 没有在我正在搜索的 HTML 中运行,根据此链接:通过“查看源代码”显示的 HTML 与(Firebug)开发人员工具中显示的 HTML 是否不同?
在查找特定元素之前,如何强制 AngleSharp 执行所有 JavaScript?
代码:
var config = AngleSharp.Configuration.Default.WithDefaultLoader().WithCookies().WithJavaScript().WithCss();
var browsingContext = BrowsingContext.New(config);
await browsingContext.OpenAsync("https://users.premierleague.com/");
await browsingContext.Active.QuerySelector<IHtmlFormElement>("form[action='/accounts/login/']").SubmitAsync(new
{
login = "abc@gmail.com",
password = "password"
});
await browsingContext.OpenAsync("https://fantasy.premierleague.com/a/team/my/");
到目前为止一切正常,我可以确认我已登录。但是,我似乎无法获得以下值的返回值:
var x = browsingContext.Active.QuerySelectorAll("*").Where(m => m.ClassName == "ismjs-link ism-link ism-link--more");
我知道这个元素是存在的,因为我已经通过 Google Chrome 上的“检查”功能检查了很多次。
我错过了什么/如何让 JavaScript 运行?
谢谢!