Sélénium: Parcourir par le biais de groupes d'éléments

Je l'ai fait avec BeautifulSoup, mais c'est un peu lourd, et je suis en train de voir si je peux le faire directement avec le Sélénium.

Disons que j'ai le code HTML suivant, qui se répète plusieurs fois dans le source de la page avec des éléments identiques mais de contenu différent:

<div class="person">
    <div class="title">
        <a href="http://www.url.com/johnsmith/">John Smith</a>
    </div>
    <div class="company">
        <a href="http://www.url.com/company/">SalesForce</a>
    </div>
</div>

J'ai besoin de construire un dictionnaire où l'entrée pour chaque personne ressemble:

dict = {'name' : 'John Smith', 'company' : 'SalesForce'}

Je peux facilement m'en Sélénium de produire une liste du contenu de chaque élément de niveau supérieur en faisant:

driver.find_elements_by_class_name('person')

Mais je ne peux pas parcourir la liste parce que la méthode ci-dessus n'est pas de restreindre la portée de source pour le contenu de cet élément.

Si j'essaie de faire quelque chose comme ceci:

people = driver.find_elements_by_class_name('person')
for person in people:
    print person.find_element_by_xpath['//div[@class="title"]//a').text

Je viens d'obtenir le même nom, encore et encore.

J'ai besoin pour ce faire, groupe par groupe, parce que dans mon cas, itérer sur l'ensemble de la page et en ajoutant chaque balise individuellement ne fonctionne pas (il n'y a défilement infini, de sorte qu'il serait vraiment inefficace).

Personne ne sait si il est possible de le faire directement en Sélénium, et si oui, comment?

OriginalL'auteur AutomaticStatic | 2014-11-19