Methods for simulating clicks, keyboard input, drag-and-drop, and modifier key combinations.
Methods for simulating clicks, keyboard input, drag-and-drop, and modifier key combinations.
LeftClick, LeftDoubleClick, MiddleClick, and RightClick operate on the element(s) matched by the current selector. Hover moves the mouse over the element without clicking. Focus makes the element the active element - if it's editable (an input, textarea, contenteditable, or anything with a text caret) Focus performs a real click first, placing the caret and readying it for typing; non-editable elements are focused/moved-to without a click. DragAndDrop drags the matched element to a target - configure the drop coordinates with a second selector or offset. SendString types a literal text string, dispatching real key events one character at a time - its pacing is controlled by GPAL.WithTypingDelay (default 0, no delay between characters); set it greater than 0 to slow typing down on every engine (Hardware, Selenium, Puppeteer, OttoMagic) by sleeping a random duration between Math.Min(25, TypingDelay) and TypingDelay milliseconds before each character. SendKey sends a virtual key code for special keys like Enter, Tab, and Escape. PressModifierKey and ReleaseModifierKey hold modifier keys across subsequent actions. Hide sets an element's CSS display to none, removing it from the page layout without deleting it from the DOM - available both as the fluent browser.WithSelector(selector).Hide() (workflow-based, hides every matched element) and as gpalElement.Hide() (element-based, hides one already-resolved element).
StealthLeftClick uses Runtime.disable to reduce detection in environments that monitor click events. Use it when standard LeftClick triggers bot-detection checks.
//SendKey accepts Windows virtual key codes (VK codes) as a byte. Common values: 0x0D = Enter, 0x09 = Tab, 0x1B = Escape, 0x41-0x5A = A-Z.
// Click a button GPAL.Browser .GoTo("https://example.com") .WithSelector("#submit") .LeftClick(); // Type text into an input GPAL.Browser .WithSelector("#search") .SendString("GPAL automation") .SendKey(0x0D); // Enter // Ctrl+A then type (select all and replace) GPAL.Browser .WithSelector("#notes") .PressModifierKey(ModifierKeys.Control) .SendKey(0x41) // A .ReleaseModifierKey(ModifierKeys.Control) .SendString("replacement text"); // Focus an input before typing (clicks to place the caret since it's editable) GPAL.Browser .WithSelector("#search") .Focus() .SendString("GPAL automation"); // Hide an element - fluent (workflow) form GPAL.Browser .WithSelector(".cookie-banner") .Hide(); // Hide an element - element-based form gPalElement.Hide();
Showing off some plain text in these paragraphs eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo veniam mollitia excepturi animi eum illum non libero sapiente provident assumenda, delectus voluptatum nobis sed dolorem adipisci laudantium incidunt. Error, ratione?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo veniam mollitia excepturi animi eum illum non libero sapiente provident assumenda, delectus voluptatum nobis sed dolorem adipisci laudantium incidunt. Error, ratione?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo veniam mollitia excepturi animi eum illum non libero sapiente provident assumenda, delectus voluptatum nobis sed dolorem adipisci laudantium incidunt. Error, ratione?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo veniam mollitia excepturi animi eum illum non libero sapiente provident assumenda, delectus voluptatum nobis sed dolorem adipisci laudantium incidunt. Error, ratione?
Here you can find different accents and emphasis sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
This is a link and how it could look like bestlinkinthebeautifulworld. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Here's just some classic bold text adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam notBoldSecondbestlinkinthebeautifulworld illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Obcaecati, iste distinctio veritatis eligendi laboriosam adipisicing elit illo nostrum corporis at adipisicing elit libero vel voluptas? Expedita, adipisicing facere dolores voluptatem ad ab rem assumenda soluta!
Other cuple of colors in case we want to emphasize several ways adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam adipisicing elit illo nostrum corporis at voluptatem libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta! Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quod veniam, quam ad expedita laborum sed at voluptates culpa ipsam ut vel. Ullam temporibus a mollitia quod aliquam ratione exercitationem nesciunt.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta! Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quod veniam, quam ad expedita laborum sed at voluptates culpa ipsam ut vel. Ullam temporibus a mollitia quod aliquam ratione exercitationem nesciunt.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, iste distinctio veritatis eligendi laboriosam illo nostrum corporis at libero vel voluptas? Expedita, facere dolores voluptatem ad ab rem assumenda soluta!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae quas consequuntur illo numquam assumenda autem exercitationem distinctio perspiciatis in natus. Eius dicta similique ipsam ipsa minima, nemo quae enim tempore.
GPAL
.CallIfNotFound(GenericCallIfNotFound)
.WithPublishToConsole();
//System.Drawing.Rectangle windowSize = new System.Drawing.Rectangle(10, 10, 1500, 1024);
// NOTE: we have to set browser = before we execute any steps
// this is due to the 'GenericCallIfNotFound' which might throw an exception, and BankScraper will not have the browser set when it calls scraper.Close()
// until the complete fluent line gets executed (meaning every step, meaning browser is not set until everything else succeeds)
browser = GPAL.Browser
.WithBrowserType(Enums.BrowserType.Chrome)
.WithProfileDataDirectory(ChromeProfileLocation)
.WithUseAutomationEngine(AutomationEngine.Selenium)
.WithWindowSize(new System.Drawing.Rectangle(0,0,1920,1080))
.ToGPALObject();