Gibt es eine Möglichkeit zu erkennen, dass ich in einer Selenium Webdriver Seite von Javascript
Möchte ich unterdrücken der Initialisierung des TinyMCE in meinen Prüfungen und kann dies leicht tun, wenn die Javascript erkennen kann, dass ich innerhalb eines Selen-automatisierte Seite.
So ist, gibt es einige JS code, den ich verwenden können, um zu erkennen, Selen-Treiber? Alternativ, wie kann ich verlängern Sie die userAgent-string enthalten ein Muster, dass ich erkennen kann JS?
Wenn es wirklich wichtig ist, ich bin mit dieser durch cucumber und capybara-auf Mac OS X.
- nur so bin ich klar, sind Sie mit Selenium-RC (Selen-1.x) oder WebDriver (Selenium 2.x)?
- Es ist Webdriver über das selenium-webdriver-0.0.28 gem.
InformationsquelleAutor Lee Iverson | 2010-09-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß, gibt es keine cross-browser-Methode, die Selenium bietet, zu erkennen, es ist die treibende browser. FF, webdriver legt die
webdriver
- Attribut auf diehtml
element aber anscheinend nicht in anderen Browsern. Eines Tages vielleicht, wird dies die Möglichkeit zu erkennen, dass der browser ist getrieben von Selen aber nicht für jetzt. Ich habe es gerade getestet mit FF und Chrome: das Attribut wurde im FF, aber nicht Chrome. So ist das also...Eine Methode für Alle Browser, Alle Betriebssysteme, Alle Test Runner
Manchmal habe ich das Bedürfnis, etwas zu tun, was Sie versuchen zu erreichen. Ich habe große test-suites mit Selen. Diese Suiten auf mehreren Versionen von Chrome, Firefox und IE auf Linux, Windows und OS X, mit einigen der tests Remote ausführen, auf Sauce Labs.
Den Methoden, die ich verwendet habe, verlassen sich auf
executeScript
. (Bin ich die Verknüpfung zu der Java-doc, aber diese Methode gibt es für alle Plattform, Selen zur Verfügung ist.) Ich es verwenden, um code ausführen, der auf der browser-Seite vor läuft ein test. Die zwei Möglichkeiten, die ich habe, verwendet diese Methode:Set einer Variablen-browser-Seite auf
window
dass mein browser code überprüft. So konnte ich zum Beispielwindow.running_test_suite_for_foobar = true
und dann haben code überprüfen. Es ist ein Risiko für einen Zusammenstoß aber wenn die variable name wird verwendet, sorgfältig das Risiko minimal ist.Andere Methode, die ich verwendet habe, ist mein code, so dass es Optionen für die Konfiguration oder undokumentierte Methoden, die aufgerufen werden kann, um es sich richtig für eine Testumgebung oder deaktivieren Sie es vollständig. Zum Beispiel habe ich eine
onbeforeunload
Modul, das verhindert, dass Benutzer den Weg von einer Seite mit nicht gespeicherten änderungen. In Tests, ist es nicht sinnvoll, dies in der Regel eingeschaltet. Selen könnte Griff das popup, aber beim ausführen von tests aus der Ferne jedem bit der Interaktion eine erhebliche Kosten. Dann mehrere von Dutzenden von tests und dann haben Sie eine test-suite, können Sie leicht nehmen Sie sich ein paar mehr Minuten zu laufen. Also ich habe eine Methode, die ich nenne, um es auszuschalten.Die Probleme mit dem Ändern der User-Agent
Den Methoden, es zu tun, unterscheiden sich von browser zu browser. Hat Ihr code überprüfen, welche browser, die Sie ausführen möchten, und dann die richtige Aktion ausführen (je nach browser).
Methoden gezeigt, für FF und Chrome in den anderen Antworten hier komplett ersetzen Sie die Zeichenfolge des Benutzer-Agenten (im Gegensatz zu dem, was einige gesagt haben). Zu Anhängen, du müsstest wissen, was der unveränderte string wäre. Dies ändert sich von browser zu browser und version zu version. Ich denke, man könnte eine Tabelle der stock user-agent-strings zu ändern. Dies ist nicht etwas, was ich wollen würde, um zu haben, zu pflegen. Oder man startet den browser zweimal: einmal, um die Abfrage der Lager-user-agent und einmal, um führen Sie den test mit der geänderten user-agent.
Und Sie können nicht faul sein, über die Verwendung der richtigen user-agent-string. Während es wahr ist, dass die browser-code sollte tun feature-Erkennung eher als browser-Erkennung, es bleiben einigen Fällen, wo der einzige vernünftige Weg, um zu wissen, dass der code handle-ein besonderer Fall von wissen, welche version der browser es ausgeführt wird. Wenn das problem ist ein bug im browser, es ist keine Funktion zu überprüfen. Überprüfen, dass der Fehler passiert ist vielleicht zu teuer oder unmöglich, zuverlässig tun. Also der code um zu überprüfen, die Benutzer-agent-Zeichenfolge. Ihr code möglicherweise nicht haben, dies zu tun, aber code von Drittanbietern können. (Zum Beispiel, ich habe ein Problem, das passiert mit
getBoundingClientRect
wo die Koordinaten wären falsch, in der Regel in IE, aber nur in einer version von Chrome. Es ist zu teuer, zu prüfen, für den bug im run-time und ich kann nicht sicher sein, dass ein ändern von Schriftarten-oder display-Einstellungen würden nicht ergeben falsch-negative Befunde.)Da die Frage erwähnt, Wasserschwein, hier ist der entsprechende code in Ruby:
Hier ist, wie es mit Capybara und Chromedriver:
Ja, Sie können es tun, wenn jemand mit firefox-Treiber für Selen-Automatisierung, für den Nachweis von Selen-Treiber, die Sie haben, um Sie folgenden code auf Ihrer client-Seite:-
Für Chrome-und IE-spezifische Selen browser es nicht funktioniert.
navigator.webdriver
funktioniert.