Chrome DevTools 脚本功能
使用 CDP 的脚本功能。
虽然 Selenium 4 提供了对 Chrome DevTools 协议的直接访问,但当 WebDriver BiDi 实现后,这些方法最终将被删除。
脚本固定
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 突变处理程序
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 }