我需要在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代码-似乎没有任何作用)
答案 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#示例,但这可能会有帮助。