C#Selenium Headless Chrome驱动程序未从网站上执行javascript

时间:2019-05-22 04:40:08

标签: javascript c# selenium selenium-chromedriver headless

我正在尝试从网站上抓取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”标记,则可以正常工作。

0 个答案:

没有答案