• Skip to main content

AutomationSTAR

A EuroSTAR Software Testing Conference

  • Programm
  • Warum Teilnehmen
    • Huddle Bereich
    • Wissenschaftler-rabatt
    • Konferenzort
  • EXPO
  • Über uns
    • Bloggen
    • Verhaltenskodex
    • Kontaktiere uns
  • Eintrittskarten

Testautomatisierung

Okt 03 2022

Testen der E-Mail-Zustellbarkeit mit SpamAssassin

Lernen Sie das E-Mail-Filtersystem von SpamAssassin kennen, um Posteingänge von unerwünschten E-Mails freizuhalten und E-Mails zu bewerten. Vielen Dank an Mailosaur für die Bereitstellung dieses Blogbeitrags.

SpamAssassin (SA) ist ein gut etabliertes E-Mail-Filtersystem, das seinem Namen alle Ehre macht. Es verwendet umfassende Methoden zur Spam-Bekämpfung, um Posteingänge von unerwünschten E-Mails freizuhalten. Der Filter weist den E-Mails Punkte zu, um die echten von den unerwünschten zu trennen.

In diesem Artikel sehen wir uns an, wie ein SpamAssassin-Score berechnet wird und was Sie tun können, um ihn zu verbessern. Die Überprüfung und Verbesserung Ihrer SpamAssassin-Ergebnisse wird Ihnen dabei helfen, bessere E-Mails zu schreiben, die Ihre Empfänger gerne erhalten werden.

Was ist SpamAssassin?

SpamAssassin (offiziell “Apache SpamAssassin”) ist ein Open-Source-Projekt, das von der Apache Software Foundation entwickelt und betrieben wird. Es wurde 2001 mit dem Ziel veröffentlicht, einen robusten und anpassbaren Filter zur Erkennung von “E-Mail-Spam” bereitzustellen, dem von Monty Python inspirierten Begriff für die Praxis des massenhaften Versands unerwünschter E-Mails.

Der Filter verwendet eine Reihe von verschiedenen Tests. Dazu gehören das Scannen des E-Mail-Textes und der Kopfzeile sowie der Abgleich der IP-Adresse des Absenders mit verschiedenen Sperr- und Erlaubnislisten. Benutzer können Regeln hinzufügen und anpassen oder einfach auf den Spam-Klassifikator von SpamAssassin zurückgreifen und ihn mit ihren eigenen Daten trainieren. Viele E-Mail-Anbieter stützen sich auf die Ergebnisse von SpamAssassin, um eingehende E-Mails als Spam oder als das Gegenteil, nämlich als “Ham”, zu klassifizieren.

Die SpamAssassin-Bewertung

Jede SpamAssassin-Regel ist mit einem Wert verbunden, der entweder negativ oder positiv sein kann. Der SpamAssassin-Filter führt seine Tests an jeder eingehenden E-Mail durch und addiert die Werte für die ausgelösten Regeln. Anschließend wird eine aggregierte SpamAssassin-Bewertung zurückgegeben. Eine höhere Punktzahl bedeutet, dass es sich bei einer E-Mail mit höherer Wahrscheinlichkeit um Spam handelt, was nicht unbedingt intuitiv ist. Wenn Sie Ihre Transaktions-E-Mails durch den SpamAssassin-Filter laufen lassen, sollten Sie daher eher eine niedrigere als eine höhere Punktzahl anstreben.

Wenn eine E-Mail einen bestimmten Schwellenwert überschreitet, wird sie als Spam eingestuft. Standardmäßig ist dieser Schwellenwert in der Konfiguration von SpamAssassin auf 5,0 eingestellt, kann aber vom Benutzer angepasst werden. Es ist üblich, den Schwellenwert so anzupassen, dass ein ausgewogenes Verhältnis zwischen einer geringen Anzahl von False Positives (echten E-Mails, die fälschlicherweise als Spam eingestuft werden) und False Negatives (Spam-E-Mails, die dem Filter vorgaukeln, sie seien echt) erreicht wird. Aus diesem Grund kann es vorkommen, dass Ihre E-Mail im Posteingang eines Empfängers landet, aber im Spam-Ordner eines anderen – möglicherweise verwendet dieser einen E-Mail-Dienst mit restriktiveren Anti-Spam-Einstellungen. Wenn Sie Ihre E-Mails mit dem SpamAssassin-Filter testen, reicht es daher möglicherweise nicht aus, einfach nur unter dem Schwellenwert von 5,0 zu liegen. Vielmehr sollten Sie eine möglichst niedrige Punktzahl anstreben.

Regelbasierte Spam-Filter

Wie sieht also eine SpamAssassin-Regel aus? Schauen wir uns ein Beispiel an, das die KAM-Regeln verwendet, einen weit verbreiteten benutzerdefinierten Regelsatz:

Sie können sich wahrscheinlich denken, auf welche Art von Betrug Sie hier abzielen, aber lassen Sie uns den Text Zeile für Zeile durchgehen. Die erste Zeile ist einfach ein Kommentar für den Entwickler, der nicht sehr aussagekräftig ist. Die nächsten beiden Zeilen sind interessanter: Sie sind als “body” gekennzeichnet und bestehen aus zwei regulären Perl-Ausdrücken (“regexes”). Regexe sind leistungsstarke Ausdrücke für die Mustererkennung in Text und sind häufig Teil des SpamAssassin-Filters.

Zusammen beschreiben die Regexe ein Muster, das häufig in Spam-E-Mails verwendet wird, in denen ein Absender ein Stellenangebot mit unrealistisch hohen Konditionen beschreibt. Interessanterweise wird die Regel nur ausgelöst, wenn der Text die Behauptung enthält, dass der Empfänger “doppelt so viel” (nicht mehr, nicht weniger) Geld verdienen kann als bei seinem derzeitigen Arbeitgeber. Dies wird durch eine “Meta”-Regel (eine komplexe Kombination von Ausdrücken) gewährleistet, die voraussetzt, dass die Summe von zwei einzelnen Mustern mindestens zwei beträgt.

Wenn diese Metaregel ausgelöst wird, erhöht sich die Spam-Bewertung um 4,3 Punkte. Erinnern Sie sich noch, als wir sagten, dass eine Punktzahl von 5,0 oft für eine Spam-Klassifizierung ausreicht? Wenn Ihre E-Mail also das obige Muster verwendet, kommt sie dem Spam-Ordner gefährlich nahe.

Obwohl die McGrail Foundation, die die KAM-Regeln entwickelt hat, eng mit Apache’s SpamAssassin verbunden ist, ist der Regelsatz streng genommen nicht Teil der Kernregelsammlung von SA. Sehen Sie sich hier alle Standardregeln von SpamAssassin an. Um Ihre eigenen Regeln hinzuzufügen, müssen Sie sie in Ihre lokale Konfiguration aufnehmen und den Parameter “allow_local_rules” auf 1 setzen.

Probabilistische Spam-Filter

Hart kodierte Regeln sind gut geeignet, um Spam abzufangen, aber eine noch intelligentere Lösung besteht darin, diese Regeln mit der Bewertung eines probabilistischen Spam-Klassifikators zu kombinieren. Der Bayes’sche Klassifikator von SpamAssassin ist ein maschinelles Lernmodell, das häufig bei der Spam-Filterung eingesetzt wird. Wie bei Techniken des maschinellen Lernens üblich, wird die Kategorisierung umso besser, je mehr E-Mails der Klassifikator sieht.

Die Benutzer von SpamAssassin haben somit die Möglichkeit, den Filter auf ihre Bedürfnisse abzustimmen, indem sie dem Klassifikator ihre eigenen als “Spam” oder “Ham” bezeichneten E-Mails zuführen. Wenn man den Parameter “bayes_auto_learn” aktiviert, kann man das System auch ohne zuvor markierte Daten verwenden. In solchen Fällen werden eingehende E-Mails, die der Filter mit einer sehr hohen Wahrscheinlichkeit als Spam oder Ham markiert hat, als Trainingsdaten an den Klassifikator zurückgegeben.

Wie Sie Ihre SpamAssassin-Punktzahl überprüfen können

Schauen wir uns endlich SpamAssassin in Aktion an! Nachdem wir einen neuen Server auf unserem Mailosaur-Konto eingerichtet haben, senden wir ihm diese absichtlich verdächtige E-Mail:

Es sieht nicht besonders vertrauenswürdig aus. Wir können schon jetzt sagen, dass wir für diese E-Mail einen ziemlich hohen SpamAssassin-Wert erhalten werden, aber können Sie erraten, welche Teile den Filter am meisten auslösen werden?

Öffnen wir unser Mailosaur Dashboard, um das zu untersuchen:

Es gibt zwar ein paar leicht positive Elemente in unserer E-Mail (insbesondere die Authentifizierungssignaturen in der Kopfzeile), aber wir haben so ziemlich jeden Fehler gemacht, der im Text der E-Mail möglich war. Die beiden negativsten Punkte waren jedoch die Anrede unseres Empfängers als “lieber Freund” und die Erwähnung einer “100%igen Garantie”.

Interessanterweise akzeptierte Google Mail die obige E-Mail trotz ihrer mittelmäßigen SpamAssassin-Bewertung in einem Posteingangsordner. Das liegt wahrscheinlich daran, dass dieser E-Mail-Dienst andere Prioritäten bei den Regeln zum Abfangen von Spam setzt als die Standardeinstellungen von SpamAssassin.

Wie Sie Ihr SpamAssassin-Ergebnis verbessern können

Die Verbesserung unserer SpamAssassin-Punktzahl ist nicht allzu schwierig. Vermeiden wir einfach die spammigen Phrasen, die hohe Werte zu unserem Score hinzufügen. Versuchen wir also als kleine Herausforderung, unser Bestes zu geben und einen negativen SpamAssassin-Wert zu erreichen:

Unsere E-Mail klingt nicht nur viel weniger hektisch als die vorherige (die Kleinschreibung mag dazu beigetragen haben), sondern sie ist auch persönlich und freundlich und bringt unsere Botschaft genauso gut rüber. Was sagt unser SpamAssassin-Ergebnis jetzt aus?

Was für ein schöner Anblick! SpamAssassin mag unsere E-Mail genauso gerne wie wir – und wir haben unser Ziel erreicht, eine negative SpamAssassin-Bewertung zu generieren.

Inhalt ist nicht alles

Während Beispiele, die den Text einer E-Mail betrachten, Spaß machen und intuitiv verständlich sind, werden viele SpamAssassin-Prüfungen hinter den Kulissen durchgeführt, und viele davon erfordern mehr als eine schön geschriebene E-Mail, um getäuscht zu werden. Wenn Ihre Domäne beispielsweise auf einer Sperrliste landet, können Sie nicht viel tun, außer eine andere Domäne oder einen anderen E-Mail-Anbieter zu verwenden.

Ebenso wurden Protokolle zur Nachrichtenauthentifizierung wie DKIM und SPF speziell entwickelt, um das Problem des E-Mail-Spoofing anzugehen, bei dem sich der Absender als eine andere Person ausgibt. Während Sie den Inhalt Ihrer E-Mail-Kopfzeilen immer noch manipulieren können, können Sie ein DKIM-Protokoll nicht einfach fälschen. Was SpamAssassin als Spamfilter so robust macht, ist die Tatsache, dass er all diese Metriken (und noch mehr) zu einer Bewertung kombiniert.
Was können Sie also tun, außer ausgefeilte E-Mails zu schreiben und wohlgeformtes HTML zu verwenden? Hier sind ein paar Tipps:

– Verwenden Sie die bereits erwähnten E-Mail-Standards: DKIM und SPF. Sie beweisen, dass Sie die E-Mail geschrieben haben und dass Sie berechtigt sind, E-Mails von Ihrer Domain zu versenden.

– Vermeiden Sie es, Massen-E-Mails von einer brandneuen IP-Adresse zu versenden: Das gilt als verdächtiges Verhalten. Wenn Sie stattdessen E-Mails an mehrere Empfänger senden, sollten Sie diese über mehrere Tage verteilen und die tägliche Belastung langsam erhöhen.

– Arbeiten Sie an Ihrem Absenderruf. Achten Sie darauf, dass Sie personalisierte E-Mails versenden, die Ihre Empfänger auch wirklich lesen wollen. Je öfter Ihre E-Mails geöffnet und gelesen werden und je weniger sie als Spam markiert werden, desto besser wird Ihr Ruf sein.

Verwenden Sie eine spezielle E-Mail-Testlösung

Die Überprüfung Ihres SpamAssassin-Ergebnisses ist nur ein winziges Teil des viel größeren Puzzles, das die Zustellbarkeit und das Testen von E-Mails darstellt. Wenn Sie es mit der Kommunikation mit Ihren Kunden ernst meinen, sollten Sie den Einsatz einer speziellen E-Mail-Testplattform wie Mailosaur in Erwägung ziehen, mit der Sie alles oben Genannte und noch viel mehr als Teil Ihrer automatisierten Testsuite durchführen können.

Mailosaur ist ein Aussteller auf der AutomationSTAR 2022. Schließen Sie sich am 17. und 18. Oktober der Gemeinschaft der Softwaretester in München an. Sichern Sie sich jetzt Ihr Ticket .

Dieser Blog wird von Google vom Englischen ins Deutsche übersetzt.

Written by Fiona Nic Dhonnacha · Categorized: Testautomatisierung

Jul 22 2022

Warum AutomationSTAR besuchen?

Warum ist der AutomationSTAR ein unverzichtbares Erlebnis? Hier kommen die führenden Anbieter von Softwaretests zusammen.

Beschleunigen Sie Ihre Testprojekte, knüpfen Sie Kontakte und schließen Sie sich einer globalen Gemeinschaft an. Dies ist ein Ort, an dem Sie sich mit allen Aspekten der Testautomatisierung befassen, verschiedene Perspektiven austauschen, Probleme und Fragen diskutieren und gemeinsam Lösungen finden können. Informieren Sie sich über das Angebot und besuchen Sie uns am 17. und 18. Oktober in München.

Wertvolle Erkenntnisse

Ganz gleich, ob Sie neu im Programmieren sind, ein Testautomatisierungsprojekt von Grund auf neu erstellen oder an codelosen Tools interessiert sind, in AutomationSTAR finden Sie die Antworten. Unsere Superstar-Redner geben Ihnen Antworten, die Ihnen helfen, Ihre Ergebnisse zu beschleunigen, sich auf die Zukunft vorzubereiten und Ihre Ziele zu erreichen. Die Vorträge behandeln verschiedene Ebenen der Testautomatisierung, einschließlich Methoden wie DevOps, neue Technologien wie KI und vieles mehr.

Bedeutsame Verbindungen

Es ist eine vielfältige Gemeinschaft, die vor Kreativität nur so strotzt – mit vielen Gelegenheiten, sich in verschiedene Gespräche einzubringen und sinnvolle Kontakte zu knüpfen. Mit Kaffeepausen, Networking-Mittagessen und vielen Bonussitzungen ist der AutomationSTAR ein Ort, an dem die Kreativität blüht. Sie werden sich mit Softwaretestern aus allen Branchen austauschen und viele Aha-Erlebnisse haben, wenn Sie neue Ideen entwickeln.

Fachkundige Redner

25 Referenten vermitteln Ihnen fundiertes Wissen rund um das Thema Automatisierung – erhalten Sie messerscharfe Einblicke direkt von führenden Testspezialisten. Erfahren Sie mehr über die Rolle von Automatisierungsingenieuren, wie man eine zuverlässige Testautomatisierung erreicht, und beantworten Sie Fragen dazu, warum wir testen und warum wir die Entscheidungen treffen, die wir treffen. Starten Sie Ihre Cypress-Testautomatisierung, erstellen Sie ein Automatisierungs-Framework, lernen Sie die Bedeutung von Soft Skills und vieles mehr.

Herausforderungen beim Testen meistern

Wir wissen, dass Sie auf der Suche nach konkreten Ergebnissen sind – deshalb werden unsere Testexperten Ihre schwierigen Fragen beantworten, sei es im Rahmen eines inspirierenden Vortrags oder eines ausführlichen Tutorials. Die AutomationSTAR-Referenten werden ihre eigenen Erfahrungen und Erkenntnisse mit Ihnen teilen, um Sie bei Ihren Testautomatisierungsprojekten auf den richtigen Weg zu bringen. Außerdem sind Sie von Gleichgesinnten umgeben, die mit denselben Problemen zu kämpfen haben wie Sie und gemeinsam nach Lösungen suchen.

Teamarbeit

Bei uns dreht sich alles um die Gemeinschaft, und wir freuen uns, Teams in der Konferenz willkommen zu heißen. Die Schulung des QA-Teams ist entscheidend für die erfolgreiche Durchführung von Automatisierungsprojekten. Schaffen Sie bei AutomationSTAR einen ganzheitlichen Teamansatz, der sicherstellt, dass alle Mitarbeiter mit ihren Aufgaben vertraut sind und über die technischen Fähigkeiten verfügen, die sie zur Unterstützung der Tests, zur Steigerung der Produktivität und zur Bereitstellung einer außergewöhnlichen Benutzererfahrung benötigen. Bonus: Gruppen sparen bei den Tickets, also schließen Sie sich mit Ihrem Büro zusammen und kommen Sie mit uns nach München.

Unser 2-für-1-Angebot läuft noch bis zum 31. Juli – das ist Ihre Chance, 50% auf Tickets zu sparen! Jetzt buchen.

Tickets kaufen

Dieser Blog wird von Google vom Englischen ins Deutsche übersetzt.

Written by Fiona Nic Dhonnacha · Categorized: Testautomatisierung · Tagged: 2022

Jul 14 2022

Playwright vs. Selenium: Was sind die Hauptunterschiede und was ist besser?

Sie fragen sich, wie Sie sich zwischen Playwright und Selenium für Ihre Testautomatisierung entscheiden sollen? Lesen Sie weiter, um einen Vergleich zu sehen. Vielen Dank an Danny Shain von Applitools für die Bereitstellung dieses Blogs.

Wenn es um die Automatisierung von Web-Tests geht, ist Selenium seit einigen Jahren das dominierende Tool der Branche. Es gibt jedoch viele andere automatisierte Testwerkzeuge auf dem Markt. Playwright ist ein neueres Tool, das sich zunehmender Beliebtheit erfreut. Wie unterscheiden sich ihre Funktionen, und für welche sollten Sie sich entscheiden?

Was ist Selen?

Selenium ist ein langjähriges Open-Source-Tool für die Browser-Automatisierung. Es wurde ursprünglich 2004 von Jason Huggins konzipiert und wird seitdem aktiv weiterentwickelt. Selenium ist ein weitverbreitetes Tool mit einer großen Nutzergemeinschaft, und die Selenium WebDriver-Schnittstelle wurde 2018 sogar zu einer offiziellen W3C-Empfehlung.

Das Framework ist in der Lage, Webbrowser zu automatisieren und zu steuern sowie mit UI-Elementen zu interagieren, und ist heute das beliebteste Framework in der Branche. Die Selenium-Suite umfasst mehrere Tools, darunter:

– Selenium WebDriver: WebDriver bietet eine flexible Sammlung von Open-Source-APIs, die zum einfachen Testen von Webanwendungen verwendet werden können.

– Selenium IDE: Dieses Aufzeichnungs- und Wiedergabewerkzeug ermöglicht eine schnelle Testentwicklung sowohl für Ingenieure als auch für nichttechnische Benutzer.

– Selenium Grid: Mit dem Grid können Sie Tests verteilen und parallel auf mehreren Rechnern ausführen.

Der Einfluss von Selenium geht sogar über das Kern-Framework hinaus, da eine Reihe anderer beliebter Tools, wie Appium und WebDriverIO, direkt auf der Selenium-API aufgebaut wurden.

Selenium wird aktiv weiterentwickelt und hat vor kurzem ein großes Versions-Update auf Selenium 4 vorgestellt. Sie unterstützt nahezu alle gängigen Browser und Programmiersprachen. Dank der großen Verbreitung und der umfangreichen Unterstützung durch die Community ist das Open-Source-Projekt Selenium auch weiterhin ein wichtiger Akteur im Bereich der Browser-Automatisierung.

Was ist Playwright?

Playwright ist ein relativ neues Open-Source-Tool für die Browser-Automatisierung, dessen erste Version von Microsoft im Jahr 2020 veröffentlicht wurde. Es wurde von dem Team hinter Puppeteer entwickelt, einem Headless-Testing-Framework für Chrome/Chromium. Playwright geht über Puppeteer hinaus und bietet neben anderen Änderungen Unterstützung für mehrere Browser.

Playwright ist für automatisierte End-to-End-Tests von Webanwendungen konzipiert. Es ist plattform-, browser- und sprachübergreifend und enthält hilfreiche Funktionen wie die automatische Wartefunktion. Es wurde speziell für das moderne Web entwickelt und läuft im Allgemeinen sehr schnell, selbst bei komplexen Testprojekten.

Playwright ist zwar viel neuer als Selenium, gewinnt aber schnell an Bedeutung und hat eine wachsende Anhängerschaft. Da es noch sehr jung ist, unterstützt es weniger Browser/Sprachen als Selenium, enthält aber auch neuere Funktionen und Möglichkeiten, die besser auf das moderne Web abgestimmt sind. Es wird von Microsoft aktiv entwickelt.

Selenium vs. Playwright

Selenium und Playwright sind beides leistungsfähige Web-Automatisierungstools, die jeweils ihre eigenen Stärken und Schwächen haben. Je nach Ihren Bedürfnissen ist eine der beiden Möglichkeiten für Sie am besten geeignet. Benötigen Sie eine breitere Palette an Browser-/Sprachenunterstützung? Wie wichtig ist Ihnen eine langjährige Unterstützung und aktive Entwicklung? Ist die Geschwindigkeit der Testdurchführung von entscheidender Bedeutung?

Jedes Tool ist quelloffen, sprachenübergreifend und entwicklerfreundlich. Beide unterstützen CI/CD (über Jenkins, Azure Pipelines usw.) sowie erweiterte Funktionen wie Screenshot-Tests und automatisierte visuelle Tests. Es gibt jedoch einige wichtige architektonische und historische Unterschiede zwischen den beiden, die einige der größten Unterschiede erklären.

Architektur und Geschichte von Selenium

– Architektur: Selenium verwendet die WebDriver-API zur Interaktion zwischen Webbrowsern und Browsertreibern. Es übersetzt Testfälle in JSON und sendet sie an die Browser, die dann die Befehle ausführen und eine HTTP-Antwort zurücksenden.

– Geschichte: Selenium ist seit mehr als 18 Jahren in Betrieb und wird kontinuierlich weiterentwickelt. Als langjähriges Open-Source-Projekt bietet es breite Unterstützung für Browser/Sprachen, eine Vielzahl von Community-Ressourcen und ein Ökosystem der Unterstützung.

Dramatiker Architektur und Geschichte

– Architektur: Playwright verwendet eine WebSocket-Verbindung anstelle der WebDriver-API und HTTP. Diese bleibt für die Dauer des Tests geöffnet, so dass alles über eine einzige Verbindung gesendet wird. Dies ist einer der Gründe, warum die Ausführungsgeschwindigkeit von Playwright tendenziell höher ist.

– Geschichte: Playwright ist relativ neu in der Automatisierungsszene. Es ist schneller als Selenium und verfügt über Fähigkeiten, die Selenium fehlen, aber es hat noch keine so breite Unterstützung für Browser/Sprachen oder Community-Unterstützung. Es ist Open Source und wird von Microsoft unterstützt.

Vergleich zwischen Playwright und Selenium-Funktionen

Bei der Auswahl Ihres nächsten Testautomatisierungs-Frameworks sollten Sie Ihre eigenen Bedürfnisse und Probleme berücksichtigen. Die folgende Tabelle hilft Ihnen beim Vergleich zwischen Playwright und Selenium.

Kriterien Dramatiker Selen
Browser-UnterstützungChromium, Firefox und WebKit (Hinweis: Playwright testet Browserprojekte, keine Standardbrowser)Chrome, Safari, Firefox, Opera, Edge und IE
SprachunterstützungJava, Python, .NET C#, TypeScript und JavaScript.Java, Python, C#, Ruby, Perl, PHP und JavaScript
Unterstützung von Test Runner FrameworksJest/Jasmine, AVA, Mocha und VitestJest/Jasmine, Mocha, WebDriver IO, Protractor, TestNG, JUnit, und NUnit
Unterstützung von BetriebssystemenWindows, Mac OS und LinuxWindows, Mac OS, Linux und Solaris
ArchitekturKopfloser Browser mit ereignisgesteuerter Architektur4-Schichten-Architektur (Selenium Client Library, JSON Wire Protocol, Browser-Treiber und Browser)
Integration mit CIJaJa
VoraussetzungenNodeJSSelenium Bindings (für Ihre Sprache), Browser-Treiber und Selenium Standalone Server
Unterstützung echter GeräteNative Handy-Emulation (und experimentelle echte Android-Unterstützung)Echte Geräte-Clouds und Remote-Server
Unterstützung durch die GemeinschaftKleineres, aber wachsendes Angebot an GemeinschaftsressourcenGroße, etablierte Sammlung von Dokumentations- und Unterstützungsmöglichkeiten
Offener QuellcodeFrei und quelloffen, mit Unterstützung von MicrosoftFrei und quelloffen, unterstützt von einer großen Gemeinschaft


Sollten Sie Selenium oder Playwright für die Testautomatisierung verwenden?

Ist Selenium besser als Playwright? Oder ist Playwright besser als Selenium? Selenium und Playwright haben beide eine Reihe von Vorteilen – hier gibt es keine einfache Antwort. Bei der Entscheidung zwischen Selenium und Playwright ist es wichtig, die eigenen Anforderungen zu verstehen und die Optionen zu untersuchen, bevor man sich für einen Gewinner entscheidet.

Selenium gegen Playwright: Lass den Code sprechen

Ein hilfreicher Weg, über die Auflistung von Funktionen hinauszugehen und ein Gefühl für die praktischen Vorteile der einzelnen Werkzeuge zu bekommen, besteht darin, sich direkt mit dem Code zu befassen und Beispiele aus der Praxis miteinander zu vergleichen. Unser Ziel bei Applitools ist es, die Testautomatisierung für Sie zu vereinfachen – und genau das haben wir getan!

Im folgenden Video sehen Sie einen direkten Vergleich zwischen Playwright und Selenium. Angie Jones und Andrew Knight führen Sie durch zehn Runden eines direkten Kampfes um den Code, bei dem das Live-Publikum über den Siegerrahmen jeder Runde entscheidet. Hier erhalten Sie einen einzigartigen Einblick in die Unterschiede zwischen Playwright und Selenium.

Selenium Vs Applitools Webinar

Wenn Ihnen diese Codeschlachten gefallen und Sie mehr wollen, haben wir auch Playwright gegen Cypress und Selenium gegen Cypress antreten lassen – sehen Sie sich hier alle unsere Versus-Battles an.

Unser ursprünglicher Kampf Playwright gegen Cypress (Zusammenfassung hier) war so beliebt, dass wir sogar eine Neuauflage geplant haben. Wer wird dieses Mal gewinnen? Melden Sie sich jetzt für das Playwright vs. Cypress Rematch an, um mitzumachen und selbst für den Gewinner zu stimmen!

Applitools ist ein Aussteller auf der AutomationSTAR 2022. Schließen Sie sich am 17. und 18. Oktober der Gemeinschaft der Softwaretester in München an. Sichern Sie sich jetzt Ihr Ticket .

Autor

Danny Shain Verantwortlicher für Content Marketing bei Applitools

Danny Shain – Manager für Inhaltsmarketing bei Applitools

Schriftstellerin mit einer Leidenschaft für sinnvolle und effektive Kommunikation. Umfassende Erfahrung in der Arbeit mit einer Reihe von Materialien, von Belletristik über akademische Texte bis hin zu Werbetexten. Technologieliebhaber und E-Commerce-Veteran.

Dieser Blog wurde von Google vom Deutschen ins Englische übersetzt.

Written by Lauren Payne · Categorized: Selen, Testautomatisierung · Tagged: 2022

Jun 23 2022

Sehen Sie sich das Programm der AutomationSTAR-Konferenz an

Schauen Sie sich das AutomationSTAR-Programm an, das eine Fülle von inspirierenden Sitzungen und ausführlichen Tutorials enthält, um Ihre Testautomatisierungsprojekte zu verbessern.

Das AutomationSTAR-Programm ist live! Am 17. und 18. Oktober treffen sich die schärfsten Köpfe der Automatisierungsbranche, um ihr Wissen mit Ihnen zu teilen. In visionären Keynotes, Track Talks, Workshops und halbtägigen Tutorials werden sie neue Erkenntnisse und Erfahrungen aus dem wirklichen Leben weitergeben und Ihnen bei der Bewältigung von Herausforderungen in Ihren Testprojekten helfen.

Egal, ob Sie neu in der Programmierung sind, ein Testautomatisierungsprojekt von Grund auf aufbauen oder sich für kodierungsfreie Tools interessieren, bei AutomationSTAR finden Sie die Antworten. Beschleunigen Sie Ihre Arbeit, bereiten Sie sich auf die Zukunft vor, und erreichen Sie Ihre Ziele. Die Vorträge befassen sich mit verschiedenen Ebenen der Testautomatisierung, darunter Methoden wie DevOps, neue Technologien wie KI und vieles mehr.

Weltklasse-Hauptredner

Unsere inspirierenden Keynote-Sprecher bieten Ihnen die besten Einblicke in die Testautomatisierung. Bas Dijkstra hinterfragt die Rolle von Automatisierungsingenieuren und warum die Rolle des Testautomatisierungsingenieurs eine schwierige ist. Andrew Knight erörtert, warum das Testen selbst sowohl Kunst als auch Technik ist, und gibt Ihnen eine Anleitung zum erfolgreichen Testen. Jenny Bramble versucht, die Frage zu beantworten, warum wir prüfen und warum wir die Entscheidungen treffen, die wir treffen.

Inspirierende Gespräche auf der Strecke

Die Vorträge des AutomationSTAR-Tracks sind vollgepackt mit anregenden Sessions – die Redner diskutieren eine Vielzahl von Themen, die einen echten Mehrwert für Ihr Testen darstellen: wie Sie echten Erfolg durch Automatisierung erzielen, ereignisgesteuerte Testautomatisierung, wie Sie Ihre automatisierten Tests zuverlässig machen, wie Sie Ihre funktionale Testautomatisierung revolutionieren, und vieles mehr. Machen Sie sich bereit, Ihre Projekte zu beschleunigen.

Bedeutsame Verbindungen

Natürlich werden Sie auch reichlich Gelegenheit haben, mit anderen Teilnehmern Kontakte zu knüpfen und Ihre Verbindungen zu erweitern. Mit Kaffeepausen, Networking-Mittagessen und vielem mehr ist AutomationSTAR ein vielfältiges, kollaboratives Umfeld, in dem Kreativität gedeiht. Sie werden sich mit Software-Testern aus allen Branchen austauschen und viele Aha-Erlebnisse haben, wenn Sie gemeinsam neue Ideen entwickeln!

siehe Programm

Dieser Blog wird von Google vom Englischen ins Deutsche übersetzt.

Written by Fiona Nic Dhonnacha · Categorized: Testautomatisierung · Tagged: 2022

Jun 22 2022

Selenium-Tutorial: Umgang mit Popups mit Selenium Webdriver

Dieser Artikel wird tiefer in den Umgang mit Popups mit Selenium Webdriver eintauchen und sie automatisieren. Dies ist ein Blogbeitrag von Mark Collin auf EuroSTAR Huddle, unserer Online-Community für kostenlose Softwaretestressourcen.

Entmystifizierung von Popups mit Selenium

Nachdem Sie eine Weile mit Selenium gearbeitet haben, erhalten Sie schließlich die Aufgabe, etwas zu automatisieren, das eine Art Popup-Funktionalität hat. Popups können in Selenium ein heikles Thema sein, da die Definition dessen, was ein Popup ist, unklar sein kann und verschiedene Treiber ein unterschiedliches Standardverhalten aufweisen. In diesem Artikel werde ich versuchen, einige klare Definitionen verschiedener Popups bereitzustellen, Ihnen zu zeigen, wie Sie mit Popups in Selenium Webdriver umgehen, und Ihnen zeigen, wie Sie sie automatisieren, sowie ein paar Fallstricke.

Zuerst müssen wir definieren, was wir unter einem Popup verstehen; Es ist ein nebulöser Begriff, den Leute verwenden, um mehrere verschiedene Arten von Funktionalität zu beschreiben, die in freier Wildbahn sind. Ich unterteile Popups gerne in drei Hauptkategorien:

Popups auf Betriebssystemebene

Das erste aufgelistete Popup ist ein Dialog auf Betriebssystemebene; Dies sind die Dinge, die Sie sehen werden, wenn der Browser die Kontrolle an das Betriebssystem übergibt, um eine Aufgabe dafür zu erledigen (obwohl Browser wie Chrome die Grenzen hier ein wenig verwischen, indem sie es so aussehen lassen, als würde der Browser es tun). Sie werden diese normalerweise sehen, wenn Sie etwas tun, was der Browser nicht kann. An diesem Punkt übergibt der Browser an das Betriebssystem, um ein anderes Programm zu finden, um die erforderliche Aufgabe auszuführen. Einige Beispiele für diese Dinge sind:

  • Drucken einer Seite, die Sie im Browser anzeigen.
  • Versenden eines Links als E-Mail.
  • Herunterladen einer Datei.

Die beste Option, um mit diesen Popups auf Betriebssystemebene umzugehen, besteht darin, niemals etwas zu tun, das sie in Ihrem Test auslöst. Das Selenium-Tutorial ist nur für die Interaktion mit gerenderten Websites konzipiert
der Browser, die Steuerung des Betriebssystems ist völlig außerhalb des Bereichs. Wenn Sie versuchen wollten, mit diesen Popups auf Betriebssystemebene zu interagieren, müssten Sie einen Code schreiben, der die steuern kann
Betriebssystem selbst (z. B. etwas, das die Java Robot-Klassen verwendet). Es gibt Tools, die dies tun, aber es ist ein komplexes Stück Arbeit, und Sie müssen die Funktionalität auf Betriebssystemebene wirklich nicht testen, um zu überprüfen, ob Ihre Website funktioniert.

HTML-Popups (Leuchtkästen)

Ein HTML-Popup kann wie ein JavaScript-Popup oder ein Popup auf Betriebssystemebene aussehen, aber in Wirklichkeit ist es nur mehr HTML, das über dem vorhandenen HTML auf der Website geschichtet ist. Aufgrund der Tatsache, dass diese Popups HTML sind, können Website-Designer CSS verwenden, um diese Dinge wie etwas aussehen zu lassen, das sie nicht sind, was zu Verwirrung führen kann. Sie müssen nichts Besonderes tun, um damit zu arbeiten; schließlich sind sie nur HTML und CSS. Sie interagieren einfach mit ihnen auf die gleiche Weise wie mit jedem anderen Element auf dem Bildschirm und tun dann, was Sie wollen.

JavaScript-Popups

Dies sind blockierende Popups; Sie unterbrechen die Ausführung von JavaScript, bis mit ihnen interagiert wurde. In der Vergangenheit waren dies die Standardtypen von Selenium-Popups, obwohl sie heutzutage nicht mehr ganz so verbreitet sind, da Website-Designer dazu neigen, stattdessen nicht blockierende HTML-Popups zu verwenden. Dies sind Dinge, mit denen Selenium interagieren kann, aber Sie müssen im Voraus wissen, welche Aktionen diese Popups auslösen werden.

Wir sollten jetzt eine klare Vorstellung von den verschiedenen Arten von Popups haben. Als nächstes schauen wir uns etwas Code an.

Arbeiten mit Warnungen

Zunächst werden wir uns ansehen, wie Sie Warnmeldungen automatisieren können. Zunächst benötigen wir etwas HTML zur Automatisierung. Speichern Sie den folgenden HTML-Code als „alert.html“:

private Zeichenfolge alertFileLocation = “file:// /alert.html”;

    
    
        Warnungen in Selen
        
        
        
        
        
    
    
    

Dies ist ein Warnfeld, das von JavaScript ausgelöst, aber in HTML gerendert gerendert wird

Dies ist eine einfache Seite mit einigen Schaltflächen. Einer löst eine HTML-Warnung aus und einer löst eine JavaScript-Warnung aus. Laden Sie es in den Browser und probieren Sie es aus, um zu sehen, wie es funktioniert.

Wir werden jetzt Code schreiben, um diese Seite zu automatisieren. Zunächst müssen wir den Ort definieren, an dem Sie das obige HTML gespeichert haben. Ersetzen Sie einfach den folgenden Code durch den Pfad zu der Datei, die Sie oben gespeichert haben.

private Zeichenfolge alertFileLocation = “file:// /alert.html”;

Nun zu unserem ersten grundlegenden Teil der Automatisierung:

@Prüfen
 public void triggerBothPopups() löst Exception {
 driver.get (alertFileLocation);

 WebElement generateAlertOne = driver.findElement(By.id("js_alert"));
 WebElement generateAlertTwo = driver.findElement(By.id("html_alert"));

 generateAlertOne.click();
 generateAlertTwo.click();
  }

Dieser Code lädt die Webseite: Klicken Sie auf die Schaltfläche, um die JavaScript-Warnung auszulösen, und klicken Sie dann auf die Schaltfläche, um die HTML-Warnung auszulösen. Wenn Sie diesen Test jetzt ausführen, sollte er fehlschlagen und Sie sollten einen Fehler sehen, der so aussieht:

org.openqa.selenium.UnhandledAlertException: Unerwartete Warnung geöffnet: {Warntext: Dies ist eine JavaScript-Warnung}

Möglicherweise haben Sie jedoch keinen Fehler gesehen …

Dies liegt daran, dass verschiedene Treiber unterschiedlich implementiert werden; Wenn Sie Firefox v53.0.3 und GeckoDriver v0.16.1 ausführen, hat es die Tatsache ignoriert, dass dort ein Popup angezeigt wird, und versucht, trotzdem fortzufahren. Wir werden später darauf zurückkommen und uns das ansehen. Lassen Sie uns zunächst sicherstellen, dass wir chromedriver verwenden.

Jetzt, da wir Chromedriver verwenden, versuchen wir, unseren Automatisierungscode zu reparieren. Selenium bietet eine API, die es Ihnen ermöglicht, mit Warnungen zu interagieren, also lassen Sie uns sie verwenden.

 @Prüfen
 public void triggerBothPopups() löst Exception {
 driver.get (alertFileLocation);
 WebElement generateAlertOne = driver.findElement(By.id("js_alert"));
 WebElement generateAlertTwo = driver.findElement(By.id("html_alert"));

 generateAlertOne.click();
 driver.switchTo().alert().accept();
 generateAlertTwo.click();
 driver.switchTo().alert().accept();
  }

Wie Sie sehen können, sagen wir Selenium jetzt, dass es auf die Warnung umschalten soll, sobald sie aufgetaucht ist. Sobald wir darauf umgestellt haben, sagen wir Selenium, es zu akzeptieren. Lassen Sie uns den Test erneut ausführen und sehen, was jetzt passiert.

Sie sollten nun den folgenden Fehler sehen:

org.openqa.selenium.NoAlertPresentException: Keine Warnung offen

Dies liegt daran, dass unsere erste Benachrichtigung ein JavaScript-Popup ist, unsere zweite jedoch ein HTML-Popup (oder eine Lightbox). Die Funktion, zu einer Warnung zu wechseln und sie zu akzeptieren, funktioniert nur mit JavaScript-Popups, nicht mit HTML-Popups. Um mit dem HTML-Popup zu interagieren, müssen wir uns das Markup ansehen und damit umgehen wie mit jedem anderen HTML-Element.

Hier ist unser letztes Stück Testcode.

 @Prüfen
 public void triggerBothPopups() löst Exception {
 driver.get (alertFileLocation);
 WebElement generateAlertOne = driver.findElement(By.id("js_alert"));
 WebElement generateAlertTwo = driver.findElement(By.id("html_alert"));

 generateAlertOne.click();
 driver.switchTo().alert().accept();

 generateAlertTwo.click();
 WebElement closeHtmlAlertButton = driver.findElement(By.cssSelector(.ui-button"));
 closeHtmlAlertButton.click();
  }

Wir behandeln jetzt jede Art von Warnung korrekt und haben ein glückliches Stück Automatisierung.

Warum der Test in Firefox nicht fehlgeschlagen ist

Fahren wir mit unserem Selenium-Tutorial fort und kehren wir zu dem Problem mit Firefox zurück, das wir erwähnt haben, als wir unseren ersten Test geschrieben haben. Firefox löste keine Ausnahme aus, wenn eine unerwartete Warnung vorhanden war, sodass wir keinen Fehler sahen. Wenn so etwas passiert, kann es sehr verwirrend sein. Der Hauptgrund, warum unser Test nicht fehlschlug, war, dass wir danach keine Kontrollen mehr durchführten
Interaktion mit den Elementen. Lassen Sie uns den letzten Test machen, den wir geschrieben haben, und den Code löschen, der zur Warnung wechselt, und sehen, was passiert, wenn wir ihn in Firefox v53.0.3 und GeckoDriver v0.16.1 ausführen.

@Prüfen
 public void triggerBothPopups() löst Exception {
 driver.get (alertFileLocation);
 WebElement generateAlertOne = driver.findElement(By.id("js_alert"));
 WebElement generateAlertTwo = driver.findElement(By.id("html_alert"));

 generateAlertOne.click();

 generateAlertTwo.click();
 WebElement closeHtmlAlertButton = driver.findElement(By.cssSelector(.ui-button"));
 closeHtmlAlertButton.click();
  }

Diesmal schlägt der Test fehl, aber Sie sehen den folgenden Fehler:

org.openqa.selenium.NoSuchElementException: Element kann nicht gefunden werden: .ui-button

Es ist fehlgeschlagen, weil wir die Schaltfläche zum Schließen des HTML-Popups nicht finden können; Die Implikation hier ist, dass das Klicken auf die zweite Schaltfläche zum Generieren von Warnungen nicht funktioniert hat. Jetzt wissen wir, dass dies nicht der Fall ist, dieser Test schlägt fehl, weil wir den Code entfernt haben, der auf die Warnung umschaltet und sie akzeptiert. Können wir dies klarer machen, indem wir einen Screenshot dessen, was der Test sieht, in die Datei schreiben?

 @Prüfen
 public void triggerBothPopups() löst Exception {
 driver.get (alertFileLocation);
 WebElement generateAlertOne = driver.findElement(By.id("js_alert"));
 WebElement generateAlertTwo = driver.findElement(By.id("html_alert"));

 generateAlertOne.click();

 generateAlertTwo.click();

 Screenshot der Datei = neue Datei ("screenshot.png");
 FileOutputStream screenshotStream = new FileOutputStream(screenshot);
 screenshotStream.write(((TakeScreenshot) driver).getScreenshotAs(OutputType.BYTES));
 ScreenshotStream.close();
 System.out.println("Screenshot gespeichert unter: " + screenshot.getAbsolutePath());

 WebElement closeHtmlAlertButton = driver.findElement(By.cssSelector(.ui-button"));
 closeHtmlAlertButton.click();
  }

Lassen Sie uns den Test erneut ausführen; Dieses Mal wird ein Screenshot erstellt und der Speicherort der Datei im Konsolenprotokoll angezeigt. Dies sollte uns die JavaScript-Warnung zeigen, die alle Probleme verursacht.

Wenn Sie jetzt den Screenshot öffnen und sich ihn ansehen, wird er Ihnen wahrscheinlich nicht das zeigen, was Sie erwartet haben. Der Screenshot zeigt die gerenderte Website ohne JavaScript- oder HTML-Warnungen. Was ist los?

JavaScript-Popups sind nicht Teil der gerenderten Website, sondern werden vom Browser gerendert. Infolgedessen werden sie nicht in Screenshots von Selenium angezeigt. In jeder Hinsicht sieht es so aus, als hätten wir einen Fehler bei der Website-Implementierung gefunden. Es sieht so aus, als ob das Klicken auf die zweite Schaltfläche keine HTML-Warnung auslöst, die angezeigt werden soll. Wenn Sie jedoch zurückgehen und manuell testen, werden Sie sehen, dass es funktioniert.

Wir kennen das Problem, aber stellen Sie sich vor, wie verwirrend das für jemanden wäre, der nicht versteht, dass wir eine Mischung aus verschiedenen Arten von Popups haben. Sie würden wahrscheinlich einen Fehler melden, der besagt, dass die zweite Schaltfläche nicht funktioniert hat, und ihn an einen Entwickler zurückgeben, der das Problem nicht reproduzieren könnte (weil das einzige vorhandene Problem ein Problem mit dem Testcode ist).

Arbeiten mit anderen Arten von JavaScript-Popups

Bisher haben wir uns nur mit einem Popup-Typ beschäftigt, dem Alert. Es gibt zwei weitere Arten von JavaScript-Popups, auf die Sie möglicherweise stoßen, das Aufforderungs-Popup und das Bestätigungs-Popup. Lassen Sie uns das letzte Stück HTML erstellen, das wir automatisieren werden, speichern Sie Folgendes als „popup.html“:

    
    
    
        Eingabeaufforderungen in Selen
    
    
    

Wie zuvor müssen wir den Ort definieren, an dem Sie das obige HTML gespeichert haben. Ersetzen Sie einfach den folgenden Code durch den Pfad zu der Datei, die Sie oben gespeichert haben.

private String popupFileLocation = “file:///popup.html”;

Zunächst schauen wir uns an, wie wir mit einem Bestätigungs-Popup interagieren können. Bestätigungs-Popups stellen Ihnen eine Frage, der Sie entweder zustimmen oder die Sie abbrechen können. Sie haben immer zwei Optionen, „OK“ oder „Abbrechen“. Popups wie dieses werden normalerweise verwendet, um die Codeausführung zu blockieren, bis Sie etwas zustimmen.

Nehmen wir an, dass wir zunächst dem Bestätigungs-Popup zustimmen.

 @Prüfen
 public void triggerJavaScriptConfirmation() löst Exception {
 driver.get (popupFileLocation);

 WebElement generateConfirmationPopup = driver.findElement(By.id("js_confirm"));
 generateConfirmationPopup.click();

 driver.switchTo().alert().accept();
  }

Der Code ist sehr einfach, tatsächlich ist er genau derselbe wie der Code, den wir verwendet haben, um das Alarm-Popup zu automatisieren. Wenn wir dem Bestätigungs-Popup nicht zustimmen möchten, ist der Code genauso einfach:

 @Prüfen
 public void triggerJavaScriptConfirmation() löst Exception {
 driver.get (popupFileLocation);

 WebElement generateConfirmationPopup = driver.findElement(By.id("js_confirm"));
 generateConfirmationPopup.click();

 driver.switchTo().alert().dismiss();
  }

Der letzte Popup-Typ, den wir uns ansehen werden, ist die JavaScript-Eingabeaufforderung. Dies sind blockierende Popups, die verwendet werden, um einige Informationen von Ihnen zu erhalten. Wenn Sie diese Art von Popup verwenden, werden Sie dem Benutzer wahrscheinlich eine Frage stellen, auf die er antworten muss, also werden wir uns ansehen, wie wir überprüfen können, ob die richtige Frage gestellt und die erforderlichen Informationen eingegeben werden . Hier ist unser Code:

 @Prüfen
 public void triggerJavaScriptPrompt() löst Exception {
 driver.get (popupFileLocation);

 WebElement generatePromptPopup = driver.findElement(By.id("js_prompt"));
 generatePromptPopup.click();

 Alarmaufforderung = driver.switchTo().alert();

 assert(prompt.getText().equals("Dies ist eine JavaScript-Eingabeaufforderung, sie möchte einige Informationen erhalten."));

 prompt.dismiss();
  }

Nachdem wir unsere JavaScript-Eingabeaufforderung ausgelöst haben, haben wir uns diesmal entschieden, ein Alert-Objekt zu definieren. Wir werden mehr als einmal mit der Warnung interagieren, daher ist es sinnvoll, dies für die Klarheit und Sauberkeit des Codes zu tun. Wir haben dann den Befehl getText() verwendet, um den Text abzurufen, der dem Benutzer angezeigt wird, und eine Behauptung aufgestellt, um zu überprüfen, ob er mit unserem erwarteten Text übereinstimmt. Wir haben daraufhin entschieden, dass wir keine weiteren Angaben machen wollen und haben die Warnung zurückgewiesen.

Was wäre, wenn wir uns entschieden hätten, einige Informationen zu übermitteln? In diesem Fall hätten wir folgenden Code geschrieben:

 @Prüfen
 public void triggerJavaScriptPrompt() löst Exception {
 driver.get (popupFileLocation);

 WebElement generatePromptPopup = driver.findElement(By.id("js_prompt"));
 generatePromptPopup.click();

 Alarmaufforderung = driver.switchTo().alert();

 assert(prompt.getText().equals("Dies ist eine JavaScript-Eingabeaufforderung, sie möchte einige Informationen erhalten."));

 prompt.sendKeys("Einige Informationen");
 prompt.accept();
  }

Wie Sie sehen können, haben wir dieses Mal einige Informationen mit dem Befehl sendKeys () gesendet und dann die Eingabeaufforderung akzeptiert. Wir hätten natürlich trotzdem entscheiden können, die Eingabeaufforderung nach der Eingabe einiger Informationen zu schließen, aber das ist ein Szenario, das wir nicht geschrieben haben. Das könntest du immer selbst ausprobieren.

Es ist noch einmal erwähnenswert, dass verschiedene Treiberimplementierungen auf viele verschiedene Arten agieren können und verschiedene Treiberimplementierungen verschiedene Teile der WebDriver-API unterstützen können. Wenn Sie Probleme haben, lohnt es sich immer, einen anderen Treibertyp auszuprobieren, um zu sehen, ob Ihr Code funktioniert.

**Dieser Blog wurde von Google aus dem Englischen ins Deutsche übersetzt.**

Written by Fiona Nic Dhonnacha · Categorized: Testautomatisierung

  • Go to page 1
  • Go to page 2
  • Go to Next Page »

Copyright © 2023 · Impressum · Privacy · T&C