Nel mio progetto WebDriver, ho pianificato di aggiungere Jsoup per ottenere "padre" e "fratelli" e poche altre funzionalità. Devo trovare un elemento tramite Jsoup e fare clic sul suo genitore usando WebDriver. Ciò significa che ho bisogno di convertire un oggetto elemento Joup in oggetto WebElement. Per favore fatemi sapere come posso farlo, se questo è fattibile.
Se non è possibile integrare Jsoup e WebDriver in questo modo, si prega di discutere su come posso ottenere genitori e tutti utilizzando WebDriver.
Inoltre, è possibile elencare TUTTI i possibili elementi presenti in un particolare WebElement?Come integrare Jsoup con WebDriver?
risposta
È piuttosto interessante che stiamo seguendo un approccio simile, integrando JSoup e Selenium WebDriver. Riesco a capire il tuo problema in particolare trattando un sito web dinamico basato su qualche framework Javascript che non ha ID o attributi stabili.
La nostra soluzione si presenta come la seguente, e, auspicabilmente, potrebbe essere un consiglio per voi:
- webDriver.getPageSource() per ottenere il codice HTML corrente
- uso JSoup per analizzare questo sorgente HTML, e leva selettore Jsoup (che è molto più potente di selenio) per individuare l'elemento di destinazione
- ottenere genitori o fratelli di questo elemento
- scrivere una funzione di iterazione per ottenere elemento xPath, come // corpo/div [2]/modulo [1]/input [3]
- webDriver.findElement (By.xpath (...)) per individuare elemento in context selenio
CURA
L'idea della funzione di iterazione è:
- prima cosa controllare le tag del tuo nodo genitore, se è il corpo, allora l'iterazione termina
- in caso contrario, quindi usa getSiblings per verificare l'indice del nodo tra tutti i nodi con lo stesso tag, ad esempio il 3 ° div, quindi equivale a div [3]
- iterare al nodo padre, e fare le stesse procedure
Una volta che il XPath del nodo figlio, e il nodo genitore, basta sostituire genitore nodo XPath per essere stringa vuota all'interno XPath nodo figlio, finalmente può ottenere il relativo xpath.
È possibile utilizzare i selettori XPath per selezionare gli elementi principali e secondari
Domande correlate
Select parent using xpath
XML xpath, get the parent element till a specific element
Getting child nodes using xpath?
Come faccio a determinare xPath di un elemento utilizzando Jsoup, in modo che possa eseguire l'operazione di WebDriver utilizzando quel xPath? Per aggiungere altro, la pagina Web che sto utilizzando contiene elementi di tipo dojo-dati e i valori degli attributi cambiano ogni 3 secondi di aggiornamento automatico. –
@AbhishekMukherjee: Havent ha provato Jsoup ma è possibile utilizzare direttamente Xpath con il webdriver per identificare il genitore/figlio – xyz
@Karna .. Il problema principale del mio progetto è che non è possibile un xPath predeterminato. Sta cambiando di tanto in tanto. Quindi devo attraversare usando Jsoup. Il problema è: anche se ottengo l'elemento indented usando Jsoup, non posso usare quell'elemento come WebElement per applicare le API di WebDriver. –
Cosa sull'esecuzione di findElements
con XPath: .//*
sul vostro elemento particolare? Inoltre, esaminare xpath parent::*
e following-sibling::*
. Per il caso particolare capisco, non c'è bisogno di Jsoup.
@Erki .. Il problema principale del mio progetto è che non esiste un xPath predeterminato. Sta cambiando di tanto in tanto. Quindi devo attraversare usando Jsoup o qualsiasi altro modo. Il problema è: anche se ottengo l'elemento indented usando Jsoup, non posso usare quell'elemento come WebElement per applicare le API di WebDriver. –
- 1. Come integrare JMeter con Selenium WebDriver per il test del carico?
- 2. Integrare il selenio con Scrapy
- 3. Come integrare Appium con C#?
- 4. Come integrare Karma con TeamCity
- 5. Come integrare Flot con AngularJS?
- 6. Come integrare websocket con emberjs?
- 7. Come integrare MongoDB con Solr?
- 8. Come integrare CKFinder con CKEditor?
- 9. Integrare Galleriffic con Lightbox, come?
- 10. Come integrare asana con intellij
- 11. Come integrare Wordpress con Cakephp?
- 12. Come integrare rubocop con Rake?
- 13. Come integrare Crashlytics con Github?
- 14. Come integrare Redis con SQLAlchemy
- 15. Come integrare NHibernate con Lucene.Net
- 16. Come integrare Ajax con Symfony2
- 17. Come integrare Eslint con jenkins?
- 18. Accesso in LinkedIn con JSoup
- 19. integrare dotCover con TFS
- 20. Come pubblicare file usando JSoup?
- 21. Integrare Spring con IntelliJ
- 22. Android - usando Jsoup con android_asset file html
- 23. Come integrare Hoptoad con DelayedJob e DaemonSpawn?
- 24. Come integrare MSpec con MS Build?
- 25. Come integrare Keycloak con Spring (senza avvio)?
- 26. Come integrare JQGrid con Django/Python
- 27. Come integrare WinMerge con TortoiseSvn dopo l'installazione?
- 28. Come integrare codeIgniter con netbeans completamente
- 29. Come integrare Jira con GitLab CE?
- 30. Come integrare NAnt con Visual Studio?
@SmartekWorks .. Grazie per il vostro consiglio. È abbastanza simile a quello che pensavo inizialmente. Ma il problema che stavo affrontando è determinare l'xPath relativo dall'elemento Jsoup. Potete per favore aiutarmi a condividere i tuoi pensieri su come scrivere una funzione di iterazione per ottenere xPath relativo? –
@AbhishekMukheree per favore controlla le mie risposte modificate – SmartekWorks
@SmartekWorks .. Grazie mille per l'idea. Durante l'applicazione di questo nel mio progetto, ho trovato una difficoltà in più, quando parte di una pagina html. JSoup analizza tutto (inclusa la parte nascosta), ma WebDriver non considera la parte nascosta. Quindi, a volte capita che xPath, determinato da JSoup, non sia valido per WebDriver, poiché ci sono anche alcune parti nascoste. E type = "hidden" non è nemmeno presente nella maggior parte dei casi. Hai mai avuto problemi simili? –