Selenium C # GetLog возвращает исключение NullReferenceException

#c# #selenium #selenium-webdriver

#c# #селен #selenium-webdriver

Вопрос:

Я стряхнул пыль с какого-то старого кода, который, как я знаю, раньше работал, но, похоже, больше не функционирует. А именно

 var browserLogs = Driver.Manage().Logs.GetLog(LogType.Browser);
  

Раньше это возвращало любые записи журнала консоли, но теперь я получаю следующее
введите описание изображения здесь

Последний раз я использовал этот код около 2 лет назад, поэтому мои вопросы:

Что изменилось в Chrome? Что мне нужно изменить в моем коде, чтобы это снова заработало?

Я использую Chrome 85.x и т.д. с соответствующими ChromeDriver, C # и Selenium. Драйвер правильно инициализирован, и отрисована действительная веб-страница. Также у меня есть это, как в моих параметрах драйвера

 options.SetLoggingPreference(LogType.Browser, LogLevel.All);
  

Есть идеи, ребята?

Больше кода ниже

         public static void BeforeFeature(int server, string title)
    {
        if (server == 1) ResetReportVariables(TestUrls.DomainLive, title);
        if (server == 2) ResetReportVariables(TestUrls.Domain, title);
        var options = new ChromeOptions();
        options.AddArguments("disable-browser-side-navigation");
        options.AddArguments("disable-infobars");
        options.AddArgument("ignore-certificate-errors");
        options.AddArgument("ignore-ssl-errors");
        options.AddArgument("disable-popup-blocking");
        options.AddArguments("start-maximized");
        options.AddArguments("no-sandbox");
        options.SetLoggingPreference(LogType.Browser, LogLevel.All);
        Driver = new ChromeDriver(options);
        Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(TestValues.DelayShort);
        Driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(TestValues.DelayShort);
        Driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(TestValues.DelayShort);
        Driver.Manage().Cookies.DeleteAllCookies();
    }


Scenario Outline: Validate the following pages on live site
Given that I browse to "<url>" page on "1" server
Then  no console errors were detected

Examples:
  | url             |
  | /               |


        [Given(@"that I browse to ""(.*)"" page on ""(.*)"" server")]
    public void GivenThatIBrowseToPageOnServer(string url, int server)
    {
        Visit(url, server);
    }


    [Then(@"no console errors were detected")]
    public void ThenNoConsoleErrorsWereDetected()
    {
        ValidateTheConsoleResults();
    }

        protected void Visit(string ext, int server)
    {
        WriteToReport(GetTheCurrentMethod());
        if (server == 1)
            ThisUrl = LiveUrl;
        else
            ThisUrl = PageUrl;

        WriteToReport("Load page "   ThisUrl);
        Driver.Navigate().GoToUrl(ThisUrl   ext);
        WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
        wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.UrlContains(ThisUrl));
    }


        protected void ValidateTheConsoleResults()
    {
        WriteToReport(GetTheCurrentMethod());
        Visit();
        var errors = 0;
        //now we check the logs for errors
        var browserLogs = Driver.Manage().Logs.GetLog(LogType.Browser);
        if (browserLogs.Count > 0)
        {
            foreach (var log in browserLogs)
            {
                if (log.Level.Equals(LogLevel.Warning))
                {
                    WriteToReport("Logged Warning - "   log);
                    continue;
                }
                else
                {
                    WriteToReport("Logged Error - "   log);
                    errors  ;
                }
            }
        }
        if (errors != 0) AssertFalse(errors   " Console errors detected");
        else AssertTrue("No console errors detected");
    }
  

Комментарии:

1. можете ли вы предоставить свои коды здесь?

2. Привет, Джастин, код добавлен к вопросу

3. @Kev Вы пробовали привязки 4.0 alpha .NET? При chromedriver реализации спецификации W3C WebDriver конечная точка HTTP, используемая привязками для журналов, исчезла. Были внесены некоторые изменения, чтобы вернуть его, но они не появлялись до версии 4.0 alpha 1 . СЕТЕВЫЕ привязки, если я правильно помню.

4. @JimEvans, спасибо, я рассмотрю это

5. @JimEvans, который решил это, большое спасибо

Ответ №1:

@JimEvans ты звезда, которая решила эту проблему, большое спасибо