0

I have an angularjs web page and want to get the specified element's scope. But after executing the reloadWithDebugInfo function, the result is null;

    private Page _page;
    private Browser _browser;

    private async void button1_ClickAsync(object sender, EventArgs e)
    {
        try
        {
            await initAsync();
            await test2Async();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error : " + ex.Message);
        }
    }

    private async Task initAsync()
    {
        _browser = await Puppeteer.LaunchAsync(new LaunchOptions
        {
            Headless = false,
            ExecutablePath = @"c:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
            Timeout = 60000
        });
    }

    private async Task test2Async()
    {
        try
        {
            _page = await _browser.NewPageAsync();

            await _page.GoToAsync("https://SOME Angular JS WebPage");

            await _page.EvaluateFunctionAsync(@"() => angular.reloadWithDebugInfo()");

            var scopeContent = await _page.EvaluateFunctionAsync("() => angular.element(document.getElementsByClassName('left-column-v3')).scope() ");

            // scopeContent is null. why? (the above javascript code runs successfully in the chrome dev console.)
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error : " + ex.Message);
        }
    }

These statements works well in chrome dev tools. I expect the json content of the scope, but that is null;

Update: sorry, I forgot something after Scope(). I want a variable in the scope, not scope itself:

        var scopeContent = await _page.EvaluateFunctionAsync("() => angular.element(document.getElementsByClassName('left-column-v3')).scope().SomeVariable ");
RED-C0DE
  • 11
  • 2
  • 4

1 Answers1

0

The problem is that the result of the scope function is not serializable. You would need to build a serializable object inside the EvaluateFunctionAsync and return that.

Javascript error

hardkoded
  • 18,915
  • 3
  • 52
  • 64