Selenium & TestNG
Hier eine Liste mit Problemen die ich beim ersten Einsatz vom Selenium & TestNG hatte und keine direkte Problemlösung im Netz gefunden habe.
Problem 1:
Man kann seine TestSuiten in mehrere SubSuiten unterteilen und über mehrere XML-Konfigurationen definieren.
Bsp:
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="UTF-8"?> <suite name="suiten" verbose="10"> <suite-files> <suite-file path="suiten/myTest1.xml"/> </suite-files> <suite-files> <suite-file path="suiten/myTest2.xml"/> </suite-files> </suite> |
Leider kommt es bei diesem Setup zu einer NullPointerException
[TestNG] Reporter org.testng.reporters.XMLReporter@be0e27 failed
1 2 3 4 5 6 |
java.lang.NullPointerException at java.util.Calendar.setTime(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at org.testng.reporters.XMLReporter.addDurationAttributes(XMLReporter.java:144) |
Scheinbar verlangt TestNG das in jedem Suite-File mind. ein konkreter Test enthalten ist.
Mit diesem Setup hats dann funktioniert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="UTF-8"?> <suite name="suiten" verbose="10"> <suite-files> <suite-file path="suiten/myTest1.xml"/> </suite-files> <suite-files> <suite-file path="suiten/myTest2.xml"/> </suite-files> <test name="StartStop"> <classes> <class name="de.test.java.FakeTest"/> </classes> </test> </suite> |
Problem 2:
Um den kompletten Inhalt eines HTML-Elementes auszulesen gibt es folgende Möglichkeit:
1 |
String tableContent = session().getAttribute("//form[@id='test']/div/table"); |
Dabei konnte allerdings der XPath durch die SingleQuotes nicht korrekt aufgelöst werden.
1 |
ERROR: Invalid xpath: XPath parse error |
Mit getText hats dann geklappt:
1 |
String tableContent = session().getText("//form[@id='test']/div/table"); |
Im String tableContent sind dann alle sichtbaren Inhalte der Tabelle, durch Whitespaces getrennt, enthalten.
Link-Sammlung CSS 3
hier mal eine liste von seiten, die sich bei der entwicklung mit css 3 als nützlich herrausgestellt haben:
Übersicht der Browser-Unterstützung von CSS 3 Eigenschaften
CSS 3-Live Editor mit Cross-Browser-Regeln
CCS 3-Editor mit Vorschau und Browser-Kompatibilität
CSS 3 Gradient Code Generator
CSS 3 Border Radius Generator
Google Talk und die Zwischenablage
Jedes mal wenn ich in Google Talk was kopieren möchte erscheint die Meldung:
„Möchten Sie zulassen, dass Informationen aus der Zwischenablage in dieser
Seite eingefügt werden“.
Diese muss man mit einem „OK“ bestätigen. Dies stört natürlich beim arbeiten, um diese Info los zu werden muss man im IE (bei mir der 6er) im Menüpunkt
Internetoptionen -> Sicherheit
und dort im Bereicht Sicherheitsstufe dieser Zone -> Stufe anpassen
Dort muss man dann letztendlich im Punkt
„Einfügeoperationen über ein Skript zulassen“ -> Aktivieren wählen. (dies stand bei mir auf Eingabeaufforderung).
Anschließend kann man kopieren ohne die nervige Meldung.
iCal Duplikate entfernen
Um nach einem missglückten Sync-Versuch alle Duplikate zu löschen eignet sich das Tool iCal Dupe Deleter hervorragend.
Traktor 3 & BCD 3000 unter Mac OSX
Sollte man Probleme dabei haben das die Keysettings vom Behringer nicht richtig funktionieren hilft folgendes:
unter dem Einstellungspunkt -> External Sync -> Midi Clock muss das Mischpult als Midi-Interface gewählt werden.
o2 Captcha Fail
Hmm jetzt jeden Buchstaben doppelt oder doch nicht?
Rossmann Fail
Screenshot aus der Bildbestell-Software von Rossmann.
Vermute mal folgenden Tathergang:
-
1. Kunde formuliert die Parameter einer Rossmann-Filiale, unter anderem hat jede Filiale einen Namen.
2. Entwickler setzt die Anforderung um
3. Kunde merkt das jede Filiale Rossmann heißt und gibt keinen Namen ein.
Ergebnis: In der Filialauswahl steht für den Namen ein aussagekräftiges null.
Cinestar Fail
Der Film Up läuft hier schon weit vor dem offiziellen Start und dann aber auch nur ein mal.
JavaScript Logging
Nette kleine Bibliothek fürs Loggen in JavaScript Funktionen. MIt Features wie Filtern der LogEntrys nach Typ, Zeitmessung und Tastaturbedienung. Der Slogan zum Tool gefällt mir auch gut:
…and goobye to alert();