addScriptToEvaluateOnNewDocument Selenium(无效)

时间:2019-02-13 15:54:18

标签: c# .net selenium

我需要在C#.Net中执行Google Headless Chrome的addScriptToEvaluateOnNewDocument方法。我基本上需要在文档上执行任何其他javascript之前执行Javascript。这是我的代码:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    using OpenQA.Selenium.Interactions;

    namespace User
    {
        class Program
        {
            //public static IWebDriver driver = new ChromeDriver();
            public static IWebDriver driver;

            public static double magnification = 2;
            static void Main(string[] args)
            {
                ChromeOptions options = new ChromeOptions();
                //options.AddArgument("Page.addScriptToEvaluateOnNewDocument");
                options.AddArgument("--window-size=1920,1080");
                options.AddUserProfilePreference("Page.addScriptToEvaluateOnNewDocument", "alert('INJECTED SCRIPT')");

                driver = new ChromeDriver(options);

                var action = new OpenQA.Selenium.Interactions.Actions(driver);

                System.Threading.Thread.Sleep(1000);
                driver.Navigate().GoToUrl("https://google.com");
                System.Threading.Thread.Sleep(10000);
            }
         }
     }

但是警报并未触发(我已经尝试了警报以外的其他JavaScript代码-似乎没有任何作用)

2 个答案:

答案 0 :(得分:0)

尝试一下。初始化驱动程序后。希望它能起作用。

  driver.ExecuteJavaScript("alert(0);")

OR

  driver.Scripts().ExecuteScript("alert(0);")

答案 1 :(得分:0)

我只在Python中完成了此操作,但是它应该以相同的方式工作。

chromedriver应该公开名为execute_cdp_cmd()的函数 您可以在运行页面JavaScript之前使用它来运行JavaScript。请参阅下面的python示例。请注意,创建驱动程序后,应在 之后添加下面显示的代码,但在获得之前即可获得网页。

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    alert(0);
  """
})

我没有C#示例,但这可能会有帮助。