Gibt es eine Möglichkeit , um Erfassungsfehler auftritt , in der DOM
in Selenium
und Flagge wahrscheinlich die gleichen wie ein Fehler in der Seite?
Nehmen wir als kurzes Beispiel an, ich versuche, ein Ereignis an ein nicht vorhandenes HTML-Steuerelement zu binden. Mein Browser gibt einen Fehler aus, der Folgendes besagt:
element abcd not found in the console.
Wenn ich möchte, dass derselbe Fehler meine Selentests nicht besteht und die im Browser angezeigte Meldung als Fehlermeldung angezeigt wird.
Ist es möglich so etwas zu tun?
selenium
selenium-rc
Baz1nga
quelle
quelle
Antworten:
Fügen Sie dieses Skript auf Ihre Seite ein und suchen Sie in Selen nach dem JSError:
quelle
document.body.setAttribute("JSError", msg)
anstatt von jQuery abhängig zu seinIch mache das, um JavaScript-Fehler zu erfassen:
quelle
Ich bin mir nicht sicher, wann sich dies geändert hat, aber im Moment funktioniert dies für mich in Python. Die Datei ist eine einfache Seite mit einem Javascript-Fehler.
Python-Selenium Version 2.48.0 Linux Firefox 43.0
quelle
driver.log("browser").then(function(results){ console.log(results.value); }
Hier ist die Python-Webdriver-Lösung, die ich verwende:
quelle
JSErrorCollector erledigt den Job.
Einmal konfiguriert, ist es eine Frage von:
quelle
Nicht-
window.onerror
basierte Lösung (ich habe es nicht versucht): http://sejq.blogspot.com/2008/12/can-selenium-detect-if-page-has.htmlquelle
Ich möchte die Antwort von jhanifen wiederholen. Hier ist eine Javascript-Lösung, die nicht von jQuery abhängt. Es wird eine unsichtbare HTML-Liste am unteren Rand der Seite erstellt, die die Fehler enthält.
quelle
Die Lösung mit "window.onerror" hat bei mir nicht funktioniert.
Daher möchte ich auf eine andere Lösung mit dem Ändern von user-extensions.js hinweisen, die mir geholfen hat:
Kann Selenium erkennen, ob die Seite JavaScript-Fehler aufweist?
Hauptvorteil: Sie müssen die Seitenquelle nicht ändern , um die Prüfung durchzuführen.
Und so verwenden Sie user-extensions.js:
Verwenden von User-Extensions mit Selenium-IDE
Hinweis: Diese Lösung funktioniert nur mit Firefox
quelle
Hier meine Lösung, inspiriert von jhanifens Antwort:
quelle
Wenn Sie Java verwenden, können Sie diese von mir eingerichtete Bibliothek ausprobieren, mit der JS-Fehler, die in einer Chromedriver-Sitzung empfangen wurden, mithilfe von Anmerkungen zu Testmethoden einfach erfasst werden können. Es funktioniert unter JUnit5 mit erweiterter Annotation und unter TestNG mit einem Listener, der die Annotation analysiert. Die Annotation enthält boolesche Werte, mit denen Sie entscheiden können, ob Sie die gefundenen Fehler nach der Testausführung bestätigen oder protokollieren möchten.
JUnit5 Beispiel:
quelle
TestCase.tearDown()
In meinen Python Selenium-Tests verwende ich Folgendes , wodurch der Test bei JavaScript-Fehlern fehlschlägt:Dies ist inspiriert von @kleptog und @ d3ming Antworten.
quelle
Sie versuchen, das Ereignis windows.onerror in Ihre Seite aufzunehmen, oder aktivieren das Dialogfeld Fehler anzeigen in den IE-Optionen. Wenn Sie das später in Se1 wählen, wird hängen. PS: Dies wurde hier diskutiert. Mach eine Suche.
quelle