C # Selenium Headless Chrome Driver не выполняет JavaScript с веб-сайта - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь очистить сгенерированные javascript html-объекты с веб-сайта.Я перепробовал много разных библиотек и обнаружил, что селен имеет все, что мне нужно.

Я пытался запустить драйвер, не находясь в режиме без головы, и он работает, но это не то, что мне нужно.Мне нужна фоновая задача, чтобы пользовательский интерфейс был максимально чистым.

        var chromeOptions = new ChromeOptions();
        chromeOptions.AddArgument("--no-startup-window");
        chromeOptions.AddArgument("--user-agent=" + Settings.globalUserAgent);
        chromeOptions.AddArgument("--log-level=3");

        ChromeDriverService service = ChromeDriverService.CreateDefaultService();
        service.HideCommandPromptWindow = true;
        service.SuppressInitialDiagnosticInformation = true;

        using(var driver = new ChromeDriver(service, chromeOptions))
        {
            driver.Url = "https://example.com";

            driver.Navigate().GoToUrl("https://example.com/otherpage");
            var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));
            var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("sub-conv-fu")));

            string source = driver.PageSource;

            if (source.Contains("some string:"))
            {
                File.WriteAllText("test.txt", source);
            } else
            {
                File.WriteAllText("test.txt", source);
                return "Error";
            }

        }
        return "";

Эта строка кода содержит переменную, которую я хочу получить.Он загружается с использованием javascript

var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("sub-conv-fu")));

Это работает, если я уберу тэг "--headless".

...