AngleSharp:在查找元素之前运行所有JavaScript

时间:2018-02-27 17:57:31

标签: javascript c# anglesharp

我目前正在使用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运行?

谢谢!

0 个答案:

没有答案