{"id":249,"date":"2015-03-12T11:15:36","date_gmt":"2015-03-12T09:15:36","guid":{"rendered":"https:\/\/schwarzer.de\/blog\/?p=249"},"modified":"2020-09-17T15:44:22","modified_gmt":"2020-09-17T13:44:22","slug":"automatisiertes-testen-funktioniert-selenium-grid","status":"publish","type":"post","link":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/","title":{"rendered":"Automatisiertes Testen: So funktioniert Selenium Grid"},"content":{"rendered":"<p><!-- <ezTOC> -->Warum man automatisiert testen sollte, wird <a href=\"\/blog\/webapplikationen-warum-automatisiertes-testen\/\">in diesem Artikel<\/a> beschrieben. Um <strong>dynamische Webapplikationen<\/strong> automatisiert testen zu k\u00f6nnen, kann man sich einer Reihe von Tools bedienen. Ein sehr m\u00e4chtiges Werkzeug tr\u00e4gt den Namen &#8222;<strong>Selenium<\/strong>&#8222;. Die Hersteller von Selenium beschreiben das Produkt auf <a href=\"http:\/\/www.seleniumhq.org\/\">ihrer Website<\/a> kurz und treffend wie folgt: <em>Selenium automates browsers<\/em>. Selenium w\u00fcrde hier also die Aufgaben eines Mitarbeiters \u00fcbernehmen, der in einem Browser die Website per Hand testet. Die kostenfreie Software kann nicht nur einfache User-Aktionen, wie z.B. Mausklicks, simulieren, sondern auch komplizierte Benutzereingaben, wie das Einloggen ins Backend und das anschlie\u00dfende Erstellen eines Datensatzes.<br \/>\n<!--more--><\/p>\n<h2 id=\"aufgepasst-verschiedene-arten-von-selenium\">Aufgepasst: Verschiedene Arten von Selenium<\/h2>\n<p>Wenn man nach Selenium recherchiert, rauschen an einem folgende Begriffe vorbei:<\/p>\n<p><strong>Selenium 1<\/strong>, <strong>Selenium IDE<\/strong>, <strong>Selenium Remote Control<\/strong>, <strong>Selenium Grid<\/strong>, <strong>Selenium 2<\/strong>, <strong>Selenium Webdriver<\/strong>, <strong>Selenium RC<\/strong><\/p>\n<p>Die Namen sind Synonyme und h\u00e4ngen wie folgt zusammen:<\/p>\n<table>\n<thead>\n<tr class=\"header\">\n<th align=\"left\">Gebr\u00e4uchlicher Begriff<\/th>\n<th align=\"left\">Synonym<\/th>\n<th align=\"left\">Warum Synonym<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td align=\"left\">Selenium Remote Control<\/td>\n<td align=\"left\">Selenium 1<\/td>\n<td align=\"left\">Die erste Version von Selenium, deswegen <em>1<\/em><\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\"><\/td>\n<td align=\"left\">Selenium RC<\/td>\n<td align=\"left\"><em>RC<\/em> ist die Abk\u00fcrzung f\u00fcr <em>R<\/em>emote <em>C<\/em>ontrol<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">Selenium Grid<\/td>\n<td align=\"left\">Selenium 2<\/td>\n<td align=\"left\">Die zweite, \u00fcberarbeitete Version von Selenium, deswegen <em>2<\/em><\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\"><\/td>\n<td align=\"left\">Selenium Webdriver<\/td>\n<td align=\"left\"><em>Webdriver<\/em> beschreibt die Funktionsweise hinter Selenium Grid, n\u00e4mlich: \u00dcber eine <em>Web<\/em>-Schnittstelle<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">Selenium IDE<\/td>\n<td align=\"left\">(keine)<\/td>\n<td align=\"left\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Hier den drei Arten (Remote Control, Grid, IDE) handelt es sich also um verschiedene Ausf\u00fchrungen\/Typen von Selenium. Somit entstehen Fragen, die im Laufe dieses Artikels beantwortet werden:<\/p>\n<ul>\n<li><strong>Was ist der Unterschied zwischen Selenium Grid, Webdriver und Selenium Remote Control (RC)?<\/strong><\/li>\n<li><strong>Warum gibt es diese verschiedene Versionen von Selenium?<\/strong><\/li>\n<\/ul>\n<p>Schauen wir uns deshalb die <strong>verschiedenen Versionen<\/strong> von Selenium etwas genauer an.<\/p>\n<h3 id=\"selenium-ide\">Selenium IDE<\/h3>\n<p><strong>Selenium IDE<\/strong> ist ein Firefox-Plugin, welches Benutzeraktionen aufzeichnet und wieder abspielt. Alle m\u00f6glichen und scheinbar unm\u00f6glichen Actions lassen sich damit aufnehmen, bearbeiten, abspeichern und sp\u00e4ter wiedergeben. Selenium IDE kann man mit der Makro-Funktion in Excel vergleichen. Es ist sozusagen eine <strong>Makro-Funktion f\u00fcr Webseiten<\/strong>. Die aufgenommenen Befehle werden zun\u00e4chst in einem eigenen Format aufgezeichnet und k\u00f6nnen dann direkt im Selenium IDE-Fenster bearbeitet und abgespielt werden.<\/p>\n<figure id=\"attachment_252\" aria-describedby=\"caption-attachment-252\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-screenshot-selenium-ide-300x276.png\" alt=\"Infografik #1: Screenshot Selenium IDE\" width=\"300\" height=\"276\" class=\"size-medium wp-image-252\" \/><figcaption id=\"caption-attachment-252\" class=\"wp-caption-text\">Infografik #1: Screenshot Selenium IDE<\/figcaption><\/figure>\n<p>Leider unterst\u00fctzt diese abgespeckte Version von Selenium keine Schleifen, Bedingungen oder eigene Funktionen und versieht ihren Dienst tats\u00e4chlich <em>nur<\/em> im Firefox-Browser. Aber einen gewaltigen Vorteil hat die Selenium IDE doch: Man kann die dort aufgezeichneten Makros in verschiedene Programmiersprachen exportieren. Diese Exportfunktion l\u00e4sst sich mit zus\u00e4tzlichen Plugins um zus\u00e4tzliche Sprachen (z.B. <strong>PHP<\/strong>) erweitern. Beim Exportieren kann man auch ausw\u00e4hlen, ob der Code mit <strong>Selenium RC<\/strong> oder mit Selenium Webdriver (=Selenium Grid) kompatibel sein soll.<\/p>\n<figure id=\"attachment_254\" aria-describedby=\"caption-attachment-254\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-selenium-ide-exportieren-fuer-webdriver-grid-oder-remote-control-300x276.png\" alt=\"Infografik #2: Selenium IDE: Exportieren f\u00fcr Webdriver\/Grid oder Remote Control\" width=\"300\" height=\"276\" class=\"size-medium wp-image-254\" \/><figcaption id=\"caption-attachment-254\" class=\"wp-caption-text\">Infografik #2: Selenium IDE: Exportieren f\u00fcr Webdriver\/Grid oder Remote Control<\/figcaption><\/figure>\n<figure id=\"attachment_255\" aria-describedby=\"caption-attachment-255\" style=\"width: 188px\" class=\"wp-caption alignnone\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-und-funktionsweise-von-selenium-ide.png\" alt=\"Infografik #3: Architektur und Funktionsweise von Selenium IDE\" width=\"188\" height=\"202\" class=\"size-full wp-image-255\" \/><figcaption id=\"caption-attachment-255\" class=\"wp-caption-text\">Infografik #3: Architektur und Funktionsweise von Selenium IDE<\/figcaption><\/figure>\n<h3 id=\"selenium-remote-control-kurz-rc\">Selenium Remote Control (kurz: RC)<\/h3>\n<p>Das <strong>Selenium Remote Control<\/strong> (kurz auch <strong>Selenium RC<\/strong> genannt) ist ein sehr m\u00e4chtiges Tool. Man kann dort in einer Programmiersprache Testanweisungen wie<\/p>\n<ul>\n<li>rufe die Seite x auf<\/li>\n<li>klicke in das Eingabefeld y<\/li>\n<li>warte auf die Ausf\u00fchrung von AJAX<\/li>\n<li>mache einen Screenshot<\/li>\n<li>pr\u00fcfe, ob das Feld z den wert &#8222;abc&#8220; hat<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p>definieren und somit sozusagen mit dem Browser (Firefox, Chrome, IE, Opera, Safari, &#8230;) interagieren. Die Befehle werden an den Selenium-Server <code>selenium.jar<\/code> gesendet, welcher einen Browser \u00f6ffnet und dort JavaScript injiziert. Man steuert den Browser hier also im Endeffekt mit reinem JavaScript.<\/p>\n<p>Remote Control funktioniert wunderbar, bietet aber leider keine vollst\u00e4ndige, objektorientierte Schnittstelle und hat diverse Unstimmigkeiten bei Funktionsaufrufen. Zudem ist es mittlerweile veraltet und existiert nur noch aufgrund der Abw\u00e4rtskompatibilit\u00e4t. Denn die neue Version <strong>Selenium Grid<\/strong> oder <strong>Selenium Webdriver<\/strong> hat einige Verbesserungen zu bieten, die das Testing um einiges flexibler und sicherer machen.<\/p>\n<figure id=\"attachment_256\" aria-describedby=\"caption-attachment-256\" style=\"width: 164px\" class=\"wp-caption alignnone\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-und-funktionsweise-von-selenium-remote-control-rc--164x300.png\" alt=\"Infografik #4: Architektur und Funktionsweise von Selenium Remote Control (RC)\" width=\"164\" height=\"300\" class=\"size-medium wp-image-256\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-und-funktionsweise-von-selenium-remote-control-rc--164x300.png 164w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-und-funktionsweise-von-selenium-remote-control-rc-.png 174w\" sizes=\"(max-width: 164px) 100vw, 164px\" \/><figcaption id=\"caption-attachment-256\" class=\"wp-caption-text\">Infografik #4: Architektur und Funktionsweise von Selenium Remote Control (RC)<\/figcaption><\/figure>\n<h3 id=\"selenium-grid-\u00fcber-webdriver\">Selenium Grid \u00fcber Webdriver<\/h3>\n<p>Im eigenen Code werden die Testanweisung verfasst und \u00fcber eine API-Schnittstelle an den Selenium-Server geschickt. Wie der Name (<em>Web<\/em>driver) schon sagt, basiert diese API von Selenium Grid auf einer <em>Web<\/em>-Schnittstelle. Deswegen gibt es bei Selenium Grid auch mehr Programmiersprachen, sogenannte &#8222;Language Bindings&#8220;, die automatisierte Selenium Tests bedienen k\u00f6nnen. Die gew\u00e4hlte Sprache muss einfach mit dem Webservice von Selenium kommunizieren k\u00f6nnen, mehr nicht.<\/p>\n<p>Der Selenium-Server nimmt die Befehle entgegen und gibt diese an den entsprechenden <strong>Browser-Driver<\/strong> weiter. Es gibt f\u00fcr jeden Browser einen eigenen Browser-Driver. Dieser startet den Browser und steuert seine Engine direkt, nicht \u00fcber JavaScript. Daraus ergeben sich Performace-Vorteile und ein erweiterter Funktionsumfang, weil der Browser-Driver eben direkt und nativ (nicht \u00fcber JavaScript) mit seinem Browser spricht.<\/p>\n<p>Jetzt hat Selenium Grid aber auch den Vorteil, dass man seine Tests auf mehreren Rechnern gleichzeitig ausf\u00fchren kann. Das bringt nicht nur \u00dcbersichtlichkeit, sondern auch einen schnelleren und intensiveren Testablauf. So kann man ohne gro\u00dfen Aufwand mehrere Betriebssysteme mit unterschiedlichsten Browsern kombinieren und mit Leichtigkeit z.B. Screenshots einer Website erstellen.<\/p>\n<figure id=\"attachment_257\" aria-describedby=\"caption-attachment-257\" style=\"width: 165px\" class=\"wp-caption alignnone\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-und-funktionsweise-von-selenium-grid-ueber-webdriver.png\" alt=\"Infografik #5: Architektur und Funktionsweise von Selenium Grid \u00fcber Webdriver\" width=\"165\" height=\"300\" class=\"size-full wp-image-257\" \/><figcaption id=\"caption-attachment-257\" class=\"wp-caption-text\">Infografik #5: Architektur und Funktionsweise von Selenium Grid \u00fcber Webdriver<\/figcaption><\/figure>\n<h2 id=\"testplan-notwendig\">Testplan notwendig<\/h2>\n<p>Bei Selenium gibt es <em>einen einzigen Testplan<\/em> f\u00fcr mehrere Umgebungen, unter denen die Website auf Herz und Nieren gepr\u00fcft wird. Das freut nicht nur Praktikanten sondern auch die Qualit\u00e4tssicherung. Diese k\u00f6nnen nun die durch automatisierte Softwaretests gewonnene Zeit damit verbringen, weitere Testf\u00e4lle zu definieren, statt stundenlang monotone Testpl\u00e4ne abzuarbeiten. Dadurch steigt nicht nur die Zufriedenheit der Mitarbeiter im Team sondern auch die Qualit\u00e4t der Website.<\/p>\n<h3 id=\"w\u00e4hlen-der-sprache\">W\u00e4hlen der Sprache<\/h3>\n<p>Da, wie schon erw\u00e4hnt, Selenium Grid \u00fcber mehrere Sprach-Bindings verf\u00fcgt, kann man seine Programmiersprache beliebig ausw\u00e4hlen.<\/p>\n<h2 id=\"selenium-grid-architektur\">Selenium Grid Architektur<\/h2>\n<p>Um die Funktionsweisen von Selenium Grid besser verstehen zu k\u00f6nnen, nehmen wir ein Beispiel. Auf meinem Rechner l\u00e4uft Linux mit den Selenium PHP-Bindings. Ich schreibe also munter meine Testanweisungen in meiner Lieblinssprache &#8211; PHP &#8211; und freue mich meines fast schon fertigen Testplans. Mein Code schickt \u00fcber die Web-Driver-Schnittstelle Befehle an einen <strong>Selenium Hub<\/strong>. Das ist sozusagen der Verteiler der Testpl\u00e4ne. Der Hub nimmt die Testing-Anweisungen entgegen und verteilt diese an seine ausf\u00fchrenden <strong>Nodes<\/strong>. Das sind die Rechner, auf denen auch ein Selenium-Dienst l\u00e4uft, aber <em>als Node<\/em>, nicht als Hub. Der oder die passenden Nodes nehmen die Befehle entgegen und reichen diese an den entsprechenden Browser-Driver weiter. Dieser k\u00fcmmert sich entspannt um den Rest: \u00d6ffnet den Browser und kommandiert ihn herum. Klick bitte hier, tippe da, usw. Die Abbildung verdeutlicht die Zusammenh\u00e4nge.<\/p>\n<figure id=\"attachment_258\" aria-describedby=\"caption-attachment-258\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes.png\"><img src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes-300x67.png\" alt=\"Infografik #6: Architektur von Selenium Grid mit einem Hub und mehreren Nodes\" width=\"300\" height=\"67\" class=\"size-medium wp-image-258\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes-300x67.png 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes-768x172.png 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes.png 900w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/infografik-architektur-von-selenium-grid-mit-einem-hub-und-mehreren-nodes-300x67@2x.png 600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-258\" class=\"wp-caption-text\">Infografik #6: Architektur von Selenium Grid mit einem Hub und mehreren Nodes<\/figcaption><\/figure>\n<h2 id=\"selenium-verst\u00e4ndnis-der-architektur-wichtig\">Selenium: Verst\u00e4ndnis der Architektur wichtig<\/h2>\n<p>Warum steht hier aber so viel Text und irgendwelche schematischen Grafiken und gar keine einzige Zeile Code? Das Verst\u00e4ndnis der Architektur von Selenium Grid, vom Selenium Webdriver und die Unterschiede zur Selenium IDE und Selenium Remote Control ist essentiell &#8211; vor allem, wenn es um das Debugging geht. Und wenn man nach Codeschnipseln im Internet sucht, die Selenium bedienen sollen, sollte man immer im Hinterkopf haben, mit welchem Selenium man es denn <em>genau<\/em> zu tun hat.<\/p>\n<p>Bildnachweis: &copy; schwarzer.de, Titelbild: George A. Bockler, <a href=\"http:\/\/commons.wikimedia.org\/wiki\/File%3AWaterScrewPerpetualMotion.png\">via Wikimedia Commons<\/a><br \/>\n<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warum man automatisiert testen sollte, wird in diesem Artikel beschrieben. Um dynamische Webapplikationen automatisiert testen zu k\u00f6nnen, kann man sich [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":264,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[286,287],"tags":[295,297,299,302,303,304,305,306,307],"features_image":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg","rk_cat":null,"rk_date":"12.03.2015","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog\" \/>\n<meta property=\"og:description\" content=\"Warum man automatisiert testen sollte, wird in diesem Artikel beschrieben. Um dynamische Webapplikationen automatisiert testen zu k\u00f6nnen, kann man sich [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/\" \/>\n<meta property=\"og:site_name\" content=\"Schwarzer.de Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-03-12T09:15:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-17T13:44:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"618\" \/>\n\t<meta property=\"og:image:height\" content=\"219\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hans-J\u00fcrgen Schwarzer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\",\"url\":\"https:\/\/schwarzer.de\/blog\/\",\"name\":\"Schwarzer.de Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/schwarzer.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg\",\"contentUrl\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg\",\"width\":618,\"height\":219},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#webpage\",\"url\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/\",\"name\":\"Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog\",\"isPartOf\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#primaryimage\"},\"datePublished\":\"2015-03-12T09:15:36+00:00\",\"dateModified\":\"2020-09-17T13:44:22+00:00\",\"author\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\"},\"breadcrumb\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatisiertes Testen: So funktioniert Selenium Grid\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\",\"name\":\"Hans-J\u00fcrgen Schwarzer\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"caption\":\"Hans-J\u00fcrgen Schwarzer\"},\"description\":\"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.\",\"url\":\"#\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/","og_locale":"de_DE","og_type":"article","og_title":"Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog","og_description":"Warum man automatisiert testen sollte, wird in diesem Artikel beschrieben. Um dynamische Webapplikationen automatisiert testen zu k\u00f6nnen, kann man sich [&hellip;]","og_url":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/","og_site_name":"Schwarzer.de Blog","article_published_time":"2015-03-12T09:15:36+00:00","article_modified_time":"2020-09-17T13:44:22+00:00","og_image":[{"width":618,"height":219,"url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"6 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/schwarzer.de\/blog\/#website","url":"https:\/\/schwarzer.de\/blog\/","name":"Schwarzer.de Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/schwarzer.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg","contentUrl":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/03\/perpeetum.jpg","width":618,"height":219},{"@type":"WebPage","@id":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#webpage","url":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/","name":"Automatisiertes Testen: So funktioniert Selenium Grid - Schwarzer.de Blog","isPartOf":{"@id":"https:\/\/schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#primaryimage"},"datePublished":"2015-03-12T09:15:36+00:00","dateModified":"2020-09-17T13:44:22+00:00","author":{"@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a"},"breadcrumb":{"@id":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/schwarzer.de\/blog\/automatisiertes-testen-funktioniert-selenium-grid\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Automatisiertes Testen: So funktioniert Selenium Grid"}]},{"@type":"Person","@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a","name":"Hans-J\u00fcrgen Schwarzer","image":{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/#personlogo","inLanguage":"de-DE","url":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","caption":"Hans-J\u00fcrgen Schwarzer"},"description":"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.","url":"#"}]}},"_links":{"self":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/249"}],"collection":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/comments?post=249"}],"version-history":[{"count":13,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions"}],"predecessor-version":[{"id":1309,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/249\/revisions\/1309"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/264"}],"wp:attachment":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}