You can import a ready-made example from here: https://eu.eyeauras.net/share/S20240829142432YXyi4jtEdmlm
Searching for images and simulating user input is useful when working with games or unstructured data. If the task involves automating something in a browser, I highly recommend looking into using Selenium and MS Edge. This combination, proven by time and the entire industry, allows you to work with web pages and gives you full control over what happens there. Essentially, Selenium solves the same problems as the eye, but exclusively for browsers.
A huge advantage of this type of automation is that you can manage multiple windows simultaneously without any issues of input overlap or incorrect detections - browsers are completely isolated from each other.
The code below performs several actions:
A comprehensive description of working with Selenium cannot fit even in one book, let alone a small article. There is plenty of information on the internet, and ChatGPT is also well-versed in it, so go ahead
#r "nuget: Selenium.WebDriver, 4.24.0"
#r "nuget: WebDriverManager, 2.17.4"
#r "nuget: SharpZipLib, 1.4.2"
#r "nuget: AngleSharp, 1.1.2"
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
// Initialize the Edge WebDriver
using (var driver = InitializeSeleniumDriver())
{
// Navigate to Google
driver.Navigate().GoToUrl("https://www.bing.com");
Sleep(5000);
// Find the search box using its name attribute
IWebElement searchBox = driver.FindElement(By.Name("q"));
// Type the search query into the search box
searchBox.SendKeys("Selenium C# example");
// Submit the form
searchBox.Submit();
// Wait for a few seconds to see the results
Sleep(5000);
}
private EdgeDriver InitializeSeleniumDriver(){
Log.Info("Ensuring that we have webdriver installed");
var driverPath = new WebDriverManager.DriverManager()
.SetUpDriver(new WebDriverManager.DriverConfigs.Impl.EdgeConfig());
Log.Info($"Initializing webdriver session using driver @ {driverPath}");
// Set up the Edge WebDriver options
var options = new EdgeOptions(){
LeaveBrowserRunning = true
};
var service = EdgeDriverService.CreateDefaultService(
driverPath: Path.GetDirectoryName(driverPath),
driverExecutableFileName: Path.GetFileName(driverPath)
);
service.UseVerboseLogging = true;
return new EdgeDriver(service, options);
}