我目前正在使用AngleSharp构建一个用于Web自动化的应用程序。我已经设法登录到一个网站,但找不到我正在寻找的元素使用context.Active.QuerySelectorAll。
我理解这可能是因为根据以下链接,某些JavaScript未在我正在搜索的HTML中运行:Is the HTML shown via 'View Source' different from the HTML shown in (Firebug) developer tools?
在查找特定元素之前,如何强制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上提供的“Inspect”功能多次检查过。
我缺少什么/如何让JavaScript运行?
谢谢!