Chrome DevTools 腳本功能
使用 CDP 的腳本功能。
雖然 Selenium 4 提供了直接存取 Chrome DevTools Protocol 的途徑,但當 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 }