Python, le Sélénium : "Élément est plus attaché à la DOM'

Je suis grattant un site web, www.lipperleaders.com. Je veux extraire les fonds de détail de Singapour. J'ai mis en œuvre avec succès déroulante de sélection et extrait le contenu de la première page apparaissant après la présentation des options. Mais quand j'essaie d'aller vers les pages suivantes (en rendant le code cliquez sur le bouton suivant), j'obtiens l'erreur 'Element is no longer attached to the DOM'.

Mon code est d'environ 100 lignes, mais je peux donner une idée générale de l'écoulement de l'exécution de mon code:

...                    # creating driver object and all the imports
def main():
    ...
    result = find_elements_by_tag_name('span')  
    ...
    driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
    main()
main()

Ce code fonctionne très bien pour la 1ère page, mais quand main() est appelée de nouveau après avoir cliqué sur le bouton suivant. Avant cette méthode récursive, j'ai aussi essayé de mettre cela à l'intérieur d'une boucle, puis la même erreur.

Et si j'écris le même code comme:

# some code
result = find_elements_by_tag_name('span')  
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
# some code
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
.
.

Ce code fonctionne très bien sans aucune erreur à la prochaine page se charge et exécute le code écrit par la suite. Mais je ne peux pas écrire la même driver.find_element_by_id().click() de 500 pages, de même je vais avoir à répéter le reste du code associé à chaque page. C'est pourquoi je suis en train de boucle ou de la récursivité, mais sa ne fonctionne pas pour moi.

S'il vous plaît laissez-moi savoir quel est le problème avec mon approche.

OriginalL'auteur Vipul | 2014-05-26