2011-12-27 19 views
12

Oggi mi sono rimbalzato su Internet e, dopo aver letto molte soluzioni, ho deciso che scrivere un wrapper Chromium sarebbe stata un'esperienza di apprendimento interessante; per non parlare del fatto che sarebbe utile per diversi progetti ai quali sto lavorando attualmente.Scrittura di un wrapper gestito per Chromium

So che ci sono già alcuni involucri là fuori (awesomium, berkelium), per non parlare di alcuni tutorial di base like this one, ma sto guardando scrivere il mio wrapper.

Il mio interesse principale è che sono in grado di creare e accedere alla struttura DOM generata da WebKit per l'uso in C#, sia prima che dopo qualsiasi javascript da cui è stato eseguito il codice html. So che potrei guardare usando lo HTMLAgilityPack e lo Majestic12 per l'analisi dell'HTML, ma sto cercando di costruire qualcosa su un motore collaudato che sia veloce, efficiente e che sia attivamente sviluppato per il prossimo futuro. WebKit è un motore di layout sviluppato attivamente in alcuni dei browser più diffusi, e V8 è un motore javascript impressionante, da qui l'uso deciso di Chromium.

Visto che non mi importa di rendere effettivamente alcun contenuto e invece sto cercando di accedere alla struttura della pagina web, sento che incorporare WebKit nella sua interezza potrebbe potenzialmente essere eccessivo. Anche nei casi in cui mi piacerebbe che javascript modifichi il DOM, non ho ancora alcuna utilità per il rendering dei risultati.

In sintesi:

Tutto quello che veramente voglio da cromo è la capacità di creare il DOM di una pagina web, e (opzionalmente) la possibilità di eseguire dette script di pagina utilizzando impressionante motore V8 di Chromium per manipolare ulteriormente il DOM. So che sarà un'impresa, ma sono interessato a vedere cosa hai da dire. In breve, qualcuno ha lavorato con WebKit e V8 (possibilmente tramite Chromium), chi potrebbe valutare la fattibilità di questo e prestarmi la propria esperienza (tramite raccomandazioni su come affrontarlo)? So che alla fine potrei determinare un modo appropriato per avvicinarmi a questo, ma sto cercando di accelerare un po 'il processo. Collegamenti o forse un alto livello relativamente breve e dolce "Questo è come lo farei io" sono ciò che sto cercando (anche se non ho bisogno di qualcosa di troppo terribile).

Spero che ciò che sto chiedendo non sia troppo frivolo. Se lo trovi troppo generico e vuoi chiudere questo argomento, invece di farlo lascia un commento e cercherò di restringere l'attenzione. Come ho appena affermato, la mia mente si muove in giro oggi da quando mi viene un raffreddore.

+3

Questo non è il posto giusto per reclutare assistenza in qualcosa del genere. Se hai una domanda, espandi la tua capacità di ottenere una risposta, attualmente la risposta di questa domanda è molto specifica. –

+1

@Ramhound Non sto cercando qualcuno che scriva per me. Sto solo cercando consigli da qualcuno che ha più esperienza di lavoro con questi progetti. Inoltre non sono sicuro di capire cosa stai cercando di dire da parte di Se hai una domanda, espandi la tua capacità di ottenere una risposta, attualmente la risposta di questa domanda è molto specifica [sic] .' – JesseBuesking

+4

Stai parlando di creare http://www.phantomjs.org/? –

risposta

0

Io uso Selenium Webdriver con ChromeDriver per script automatico, pagina web e test di accettazione. Easy to set up, easy to use.

L'idea è che è possibile utilizzare questa interfaccia esistente, ma change the path to the Chrome executable with ChromeOptions.BinaryLocation. Prova a indicarlo a una delle versioni headless esistenti di WebKit, come WebKitDriver, potrebbe funzionare.

I nostri obiettivi potrebbero essere diversi, ma io stesso sarei interessato a una versione senza testa. Sarebbe meno invadente durante i test sulla mia macchina di sviluppo, e prendo già screenshot automatici quando un test fallisce.

1

sono sulla stessa strada.Sto guardando in profondità su QtWebKit e l'implementazione fatta su PhantomJs che è un tipo di selenio, e ha funzionato come un fascino sui miei test.

Quando si utilizza QtWebKit, come driver per WebKit è ll save time for next releases of it, because maintain a WebKit Port it s non è così facile.