{"id":682,"date":"2023-11-24T15:05:36","date_gmt":"2023-11-24T14:05:36","guid":{"rendered":"https:\/\/ittester.sk\/automatisiertes-testen\/implizites-und-explizites-warten-in-selenium\/"},"modified":"2024-06-05T12:05:50","modified_gmt":"2024-06-05T10:05:50","slug":"implizites-und-explizites-warten-im-selenium","status":"publish","type":"post","link":"https:\/\/ittester.sk\/de\/automatisiertes-testen\/selenium-tutorial-de\/implizites-und-explizites-warten-im-selenium\/","title":{"rendered":"Implizites und explizites Warten in Selenium"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Inhalts\u00fcbersicht<\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-preco-sa-v-selenium-vyzaduje-cakanie-waits\">Pre\u010do sa v Selenium vy\u017eaduje \u010dakanie (waits)?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-implicitne-cakanie\">Implicitn\u00e9 \u010dakanie<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-explicitne-cakanie\">Explicitn\u00e9 \u010dakanie<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-preco-sa-v-selenium-vyzaduje-cakanie-waits\">Warum sind in Selenium Wartezeiten erforderlich?<\/h2>\n\n<p>Bei der UI-Automatisierung sind Wartezeiten erforderlich, weil einige Elemente asynchron auf die Seite geladen werden, so dass nach dem Ausl\u00f6sen eines Ereignisses die Seite zwar erfolgreich geladen wird, aber einige Elemente noch nicht geladen sind.<\/p>\n\n<p>Dies f\u00fchrt zu einer elementNotFound-Ausnahme bei der Suche nach einem Element. In solchen F\u00e4llen bleibt uns nur die Verwendung von Thread.sleep(), t. j. Statisches Warten, das die Ausf\u00fchrung des Tests f\u00fcr eine bestimmte Zeit anh\u00e4lt und dann den n\u00e4chsten Schritt ausf\u00fchrt.<\/p>\n\n<p>Da Thread.sleep() die angegebene Zeit abwartet, unabh\u00e4ngig davon, ob die Elemente vor dieser Zeit angezeigt werden. Daher wird die Verwendung von Thread.sleep() bei der Automatisierung der Benutzeroberfl\u00e4che nicht empfohlen.<\/p>\n\n<p>Um dies zu vermeiden, bietet Selenium verschiedene Arten von Waits, von denen Implicit und Explicit Waits am h\u00e4ufigsten verwendet werden.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-implicitne-cakanie\">Implizites Warten<\/h2>\n\n<p>Die Standard-Wartezeit wird auf die WebDriver-Instanz gesetzt, wenn sie verwendet wird, und wird auf alle Web-Elemente angewendet. Beim impliziten Warten fragt der Webdriver das DOM ab, um zu pr\u00fcfen, ob das Webelement verf\u00fcgbar ist, und wartet bis zur maximal angegebenen Zeit, bevor er eine NoSuchElementException-Ausnahme ausl\u00f6st.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriver driver = new FirefoxDriver();<\/strong><\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);<\/strong><\/p>\n\n<p>Im obigen Codeschnipsel ist der in der impliziten wait-Methode angegebene Wert 20 die maximale Zeit in Sekunden, die der WebDriver wartet, bevor er bei der Suche nach einem WebElement eine NoSuchElementException-Ausnahme ausl\u00f6st.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-explicitne-cakanie\">Explizites Warten<\/h2>\n\n<p>Im Gegensatz zum impliziten Warten wird das explizite Warten auf jedes Webelement angewendet. Explizites Warten definiert bestimmte Bedingungen, unter denen eine WebDriver-Instanz wartet, bevor sie Web-Elemente abruft oder Aktionen auf ihnen ausf\u00fchrt. Einige der h\u00e4ufigsten Bedingungen, die bei explizitem Warten angegeben werden, sind: elementToBeClickable, presenceOfElementLocated, etc.<\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>WebDriverWait wait = new WebDriverWait(driver, 15);<\/strong><\/p>\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>wait.until(ExpectedConditions.presenceOfElementLocated(ElementLocator));<\/strong><\/p>\n\n<p>Hier wartet die WebDriver-Instanz, bis die angegebene Bedingung erf\u00fcllt ist, d.h. j. das Vorhandensein eines von ElementLocator lokalisierten Elements mit einer maximalen Wartezeit von 15 Sekunden, nach der, wenn die Bedingung immer noch nicht erf\u00fcllt ist, eine Ausnahme geworfen wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei der UI-Automatisierung sind (implizite und explizite) Wartezeiten erforderlich, da einige Elemente im Web asynchron geladen werden.<\/p>\n","protected":false},"author":8,"featured_media":1494,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-682","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-selenium-tutorial-de"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/comments?post=682"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/682\/revisions"}],"predecessor-version":[{"id":1496,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/682\/revisions\/1496"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media\/1494"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media?parent=682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/categories?post=682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/tags?post=682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}