Hinter den kulissen arbeiten von Selen
Wird ein selenium-test-Entwickler, die ich immer verwendet WebDriver mit wissen beschränkt sich auf die Verwendung des Tools in der Entwicklung von test-Skripts. Aber ich bin neugierig zu wissen, wie WebDriver interagiert mit einer Seite auf einem browser intern.
Meine Fragen sind:
- Ich habe gelesen, dass webdriver interagiert direkt mit der Automatisierung
engine des Browsers anstelle von ausführen von Javascript, wie Selen
RC. Heißt das, dass der WebDriver nicht ausgeführt Javascript
da er intern überhaupt?
Bedeutet das, dass es mehr als einen Weg, um die Interaktion mit dem DOM? Ich war im glauben, dass Javascript ist die einzige Möglichkeit, Zugang/analysieren von DOM in einem browser. -
Selenium RC verwendet proxy zu beseitigen das problem der same-origin-policy. Wie ist WebDriver Auseinandersetzung mit der Problematik der same-origin-policy?
-
WebDriver verwendet JSON wire protocol. Aber wo in den Komponenten der
WebDriver ist JSON Wire protocol verwendet? Ist es in den Treibern der
verschiedene Browser? Oder ist es verwendet in der Sprache Bindungen API? - Wenn mein code ist:
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
WebElement searchField = driver.findElement(By.name("q"));
searchField.sendKeys("selenium");
Wie ist das DOM zugegriffen WebDriver, wenn der obige code ausgeführt wird?
Es wäre wirklich hilfreich, wenn jemand erklären kann, diese für mich in details. Ich möchte eine community-wiki in Bezug auf die internen arbeiten der WebDriver hoffentlich jemand helfen Suche für dieses Thema. Vielen Dank im Voraus!
- Was meinst du mit Punkt 3, "wie ist das DOM zugegriffen?"
- Zum Beispiel, wenn ich ausführen-Dokument.getElementById() gibt ein javascript-Objekt repräsentiert ein element auf der DOM. Es funktioniert ebenso mit allen webdriver binding-apis? Tut webelement enthalten Referenz auf ein element auf dem DOM?
- Leute die Abstimmung für die Schließung dieses Frage - ich würde gerne wissen, warum die Frage immer ist, stimmten in der Nähe?? Keine gültigen Gründe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Implementierungen von WebDriver, dass die Kommunikation mit dem browser, oder ein RemoteWebDriver server nutzen eine gemeinsame wire-Protokoll. Diese wire-protocol definiert ein RESTful web service mit JSON über HTTP.
Also jeder WebDriver-Befehl zugeordnet ist eine HTTP-Methode über die WebDriver-service, und dann an den HTTP-Befehl-Prozessor für die Kommunikation mit dem browser.
Der Befehl Antworten als HTTP/1.1-Antwort-Nachrichten, die über die WebDriver-service.
Verschiedene Treiber, wie die Firefox-Treiber und den IE-Treiber, verschiedene Implementierungen zu erreichen, die oben genannten.
Dem Selenium WebDriver-Architektur-Dokument (Link unten) geht in weitere details auf, wie diese umgesetzt werden und wie WebDrvier Befehle fließen durch den browser und zurück.
Lesen Sie Abschnitt 16.6 für details auf die Firefox-Treiber.
Die Architektur von Open-Source-Applikationen - Selenium WebDriver
von Simon Stewart (Schöpfer von WebDriver, und core contributor zu den Selen-Projekt)
Auch Angaben über die Die WebDriver-Wire-Protokoll wird hilfreich sein, zu verstehen, wie die HTTP-Methoden abgebildet werden.