2017-09-01 5 views
-1

Je veux voir chaque li d'un ul inversé, de bas en haut. J'essaie cela, mais ne fonctionne pas:Boucle inversée sélénium python

... 
for li in reversed(ol_chat_messages.find_elements_by_xpath(".//li")): 
... 
+1

s'il vous plaît définir 'ne work' –

+0

Qu'est-ce que la sortie attendue et quelle est la sortie que vous obtenez? –

+0

Veuillez lire [ask], en particulier la partie sur [mcve] (MCVE), et [Combien d'effort de recherche est attendu?] (Https://meta.stackoverflow.com/questions/261592/how-much-research-effort -is-expected-of-stack-overflow-users) Cela vous aidera à déboguer vos propres programmes et à résoudre des problèmes par vous-même. Si vous faites cela et que vous êtes toujours bloqué, vous pouvez revenir et publier votre MCVE, ce que vous avez essayé et le résultat de l'exécution, y compris les messages d'erreur afin que nous puissions mieux vous aider. Fournissez également un lien vers la page et/ou le code HTML pertinent. – JeffC

Répondre

2

Je ne l'ai pas testé le code mais je pense que find_elements_by_xpath renvoie un générateur.

Par conséquent, vous devez le convertir en une liste à utiliser par inversée, comme ceci:

for li in reversed(list(ol_chat_messages.find_elements_by_xpath(".//li"))): 

Exemple de code de vérification:

>>> HTML = '''\ 
... <ul> 
...  <li>1</li> 
...  <li>2</li> 
...  <li>3</li> 
...  <li>4</li> 
...  <li>5</li> 
... </ul>''' 
>>> from selenium import webdriver 
>>> driver = webdriver.Chrome() 
>>> open('temp.htm', 'w').write(HTML) 
70 
>>> driver.get('file://c:/scratch/temp.htm') 
>>> for li in reversed(list(driver.find_elements_by_xpath('.//li'))): 
...  li.text 
...  
'5' 
'4' 
'3' 
'2' 
'1'