2014-04-15 7 views
7

Essendo uno sviluppatore di test di selenio, ho sempre utilizzato WebDriver con conoscenze limitate all'uso dello strumento nello sviluppo di script di test. Ma sono curioso di sapere come WebDriver interagisce con una pagina su un browser internamente.
Lavoro dietro le quinte di Selenium

Le mie domande sono:

  1. Ho letto che WebDriver interagisce direttamente con il motore di automazione del browser, invece di eseguire JavaScript come Selenio RC. Ciò significa che WebDriver non esegue JavaScript INTERAMENTE A TUTTI?
    Ciò significa che esiste più di un modo per interagire con il DOM? Credevo che Javascript fosse l'unico modo per accedere/analizzare il DOM su un browser.
  2. Selenium RC utilizzato proxy per eliminare il problema della politica di origine stessa. In che modo WebDriver affronta il problema della stessa politica di origine?

  3. WebDriver utilizza il protocollo JSON. Ma dove nei componenti di WebDriver è utilizzato il protocollo JSON Wire? È utilizzato nei driver dei vari browser ? O è utilizzato nell'API Language Bindings?

  4. Quando il mio codice è: WebDriver driver = new ChromeDriver(); driver.get(" http://www.google.com "); WebElement searchField = driver.findElement(By.name("q")); searchField.sendKeys("selenium"); Come è il DOM accede da WebDriver quando viene eseguito il codice di cui sopra?

Sarebbe davvero di grande aiuto se qualcuno potesse spiegarmi questi dettagli. Voglio creare una wiki della comunità riguardante il funzionamento interno di WebDriver per aiutare eventualmente chiunque cerchi questo argomento. Grazie in anticipo!

+0

Cosa intendete per punto 3, "a cosa accede il DOM?" – Arran

+0

Ad esempio, quando eseguo document.getElementById() restituisce un oggetto javascript che rappresenta un elemento sul DOM. Funziona in modo simile con tutte le apis di associazione al webdriver?Webelement contiene un riferimento a un elemento sul DOM? –

+0

La gente vota per aver chiuso questa domanda - Mi piacerebbe sapere perché la domanda è stata votata da vicino ?? Qualche motivo valido? –

risposta

4

Tutte le implementazioni di WebDriver che comunicano con il browser o un server RemoteWebDriver utilizzano un protocollo di filo comune. Questo protocollo wire definisce un servizio web RESTful che utilizza JSON su HTTP.

Ogni comando WebDriver viene quindi associato a un metodo HTTP tramite il servizio WebDriver e quindi trasmesso al processore dei comandi HTTP per comunicare con il browser. Le risposte del comando vengono restituite come messaggi di risposta HTTP/1.1 tramite il servizio WebDriver.

Diversi driver, come il driver di Firefox e il driver IE, hanno implementazioni diverse per realizzare quanto sopra.

Il documento di architettura Selenium WebDriver collegato di seguito fornisce ulteriori dettagli su come questi sono implementati e su come i comandi di WebDrvier passano al browser e viceversa. Leggere la sezione 16.6 per i dettagli sul driver di Firefox.

The Architecture of Open Source Applications - Selenium WebDriver
da Simon Stewart (creatore di WebDriver, e collaboratore di base per il progetto Selenio)

Inoltre, i dettagli sul The WebDriver Wire Protocol sarà utile per capire come i metodi HTTP sono mappati.

+0

Downvoter - cura di commentare? OP ha chiesto il funzionamento interno di webdriver e gli ho dato un link al suo design e architettura. – Faiz

+0

Grazie per quello. Anche se, preferirei evitare di leggere l'articolo di architettura scritto da Simon Stewart. Ho letto la pagina completa e ho capito molto poco. Preferirei che qualcuno mi spiegasse tutto ciò in modo che una persona media dell'automazione di prova possa capire. –