The /controller endpoint served by GPALRestAPI opens a browser-based visual builder where you can compose, run, save, and reload automation step sequences interactively -- and even drive the browser remotely from another machine.
GPAL lets you open, close, and switch between browser tabs and windows inside a single workflow, enabling automation that spans multiple pages or needs to manage browser context across a session.
GPAL handles file downloads through three distinct paths -- dialog, silent, and direct -- each suited to different browser configurations and site behaviors. The right path is selected with a single setting before the click.
A url is a valid filename. Hand one to GPAL.File and the file is fetched right there, before the chain continues, and everything downstream treats it as an ordinary file on disk. Give the chain a browser first and the fetch goes out through the session that browser already earned.
Content inside iframes and Shadow DOM components is invisible to standard selectors. GPAL provides context-switching methods that move the active search scope inside these nested boundaries so you can interact with what is actually there.
GPAL gives you first-class control over the identity signals browsers expose to detection systems: user agent, referrer headers, driver binary markers, CDP visibility, and more -- each configurable independently.
GPAL provides multiple overlapping layers of resilience so that workflows keep running as pages evolve. This page points out the tools worth knowing -- from multi-strategy selectors to semantic extraction to engine-level evasion.
A workflow that works is a workflow that works on Selenium, Puppeteer, and OttoMagic, in a window and headless. The harness for that is a pair of nested loops and one call, EmitTable, which prints the result as a grid you can read at a glance.
GPAL handles the full OAuth authorization-code flow automatically. It opens the auth URL in a browser, listens for the redirect, and collects the code -- spinning up its own minimal listener if GPALRestAPI is not already running.
GPAL uses C# property getters in two deliberate places: factory entry points that start a chain, and single-action steps that take no parameters. Both choices exist for the same reason -- to make the intent of each call unmistakable at a glance.