Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers.

https://www.selenium.dev/documentation/en/

Mit Selenium ist es möglich, Interaktionen mit einer Webanwendung aufnehmen zu lassen und diese Tests automatisiert beliebig oft zu wiederholen. Es kann vor allem Entwicklern von Webanwendungen sehr viel Tipparbeit abnehmen – beispielsweise beim Ausfüllen von Webformularen – und macht das Testen dadurch schneller, flexibler und verlässlicher.

https://de.wikipedia.org/wiki/Selenium

In Kürze

Selenium ist wunderbar um wiederkehrendes Klicken und Formularausfüllen zu „automatisieren“. Der Code welcher Selenium verwendet (Java, C#, ….) startet einen „eigenen“ Browser (Chrom, Firefox, IE, etc.) mit dem aus dem Code heraus Benutzerinteraktionen (klicken, Daten ausfüllen, etc.) ausgeführt und gesteuert werden können.

Nun wird meist davon gesprochen, dass damit Tests automatisiert werden können. Es ist aber auch denkbar, dass mittels Selenium spezifische Daten gesucht werden können die nicht über eine konventionelle Schnittstelle zur Verfügung gestellt werden.

Wir verwenden Selenium zusammen mit C# um über ein Web-Frontend gewisse Daten zu orchestrieren. Die Daten die dabei über das Web-Frontend gesucht werden, sind sonst nicht automatisiert abrufbar und würden jeweils durch eine Person gesucht und zusammengefasst werden müssen.

Einstieg

      // einen Webdriver instanzieren
      IWebDriver driver = new ChromeDriver();

      // Webseite öffnen
      driver.Navigate().GoToUrl(homeURL);

      // Elemente auf der Seite suchen mit
      IWebElement element = driver.FindElement(By.ClassName("className"));
      IWebElement element = driver.FindElement(By.CssSelector("css"));
      IWebElement element = driver.FindElement(By.Id("id"));
      IWebElement element = driver.FindElement(By.LinkText("text"));
      IWebElement element = driver.FindElement(By.Name("name"));
      IWebElement element = driver.FindElement(By.PartialLinkText("pText"));
      IWebElement element = driver.FindElement(By.TagName("input"));
      IWebElement element = driver.FindElement(By.XPath("//*[@id='editor']"));

      // Auf ein Element warten
      wait.Until(driver => driver.FindElement(By.XPath(xPath)));

      // Mit Elementen "spielen"
      element.SendKeys("bspw.: etwas in ein Textfeld schreiben");
      element.Click();   // auf einen Button, einen Link oder ein div klicken

Tips und Tricks

Für Chrom wie auch Firefox gibt es Selenium IDE mit denen „einfachere“ Benutzerinteraktionen aufgezeichnet werden können. (Chrom Selenium IDE)

Visual Studio NuGet hat DotNetSeleniumExtras.WaitHelpers um das Warten auf bestimmte Web-Inhalte präziser machen zu können. So kann dann zum Beispiel folgendermaßen auf ein Element gewartet werden bis es geklikt werden kann: wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))).Click();

Elemente Suchen: (bspw: WebElement outer = driver.findElement(By.anything(„whatever“));)


0 Kommentare

Schreibe einen Kommentar