Chrome DevTools Script Features

Script features using CDP.

While Selenium 4 provides direct access to the Chrome DevTools Protocol, these methods will eventually be removed when WebDriver BiDi implemented.

Script Pinning

 ScriptKey key = ((JavascriptExecutor) driver).pin("return arguments;");  List<Object> arguments =  (List<Object>) ((JavascriptExecutor) driver).executeScript(key, 1, true, element);
 var key = await new JavaScriptEngine(driver).PinScript("return arguments;");  var arguments = ((WebDriver)driver).ExecuteScript(key, 1, true, element);
 key = driver.pin_script('return arguments;')  arguments = driver.execute_script(key, 1, true, element)

DOM Mutation Handlers

 async with driver.bidi_connection() as session:  async with Log(driver, session).mutation_events() as event:
 using IJavaScriptEngine monitor = new JavaScriptEngine(driver);  monitor.DomMutated += (_, e) =>  {  var locator = By.CssSelector($"*[data-__webdriver_id='{e.AttributeData.TargetId}']");  mutations.Add(driver.FindElement(locator));  };  await monitor.StartEventMonitoring();  await monitor.EnableDomMutationMonitoring();
 driver.on_log_event(:mutation) { |mutation| mutations << mutation.element }