Bonsoir,
Je me casse la tête depuis quelques heures.
Je me connecte à un site avec login et mot de passe.
Je parcours quelques pages avec Selenium et j'arrive sur la page qui m'intéresse.
Sur cette page se trouvent des icônes (pdf, docx, tex) sur lesquelles je dois cliquer pour télécharger les fichiers correspondants.
Malheureusement, je n'y parviens pas.
Je liste les fichiers qui m'intéressent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
liste_suj = driver.find_elements(by=By.CSS_SELECTOR, value="button[class='ec']")
print(liste_suj)
qui me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[<selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="e2af7658-253b-42db-b724-913336f7ffa2")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="f1ed9649-4141-4dd2-8964-9d26cb0e64e3")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="5a1f871d-5200-4020-8949-2a59ded10615")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="14e9eb79-9e72-4428-9f7c-8b6aec0629a0")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="834f24da-e11e-49e0-a3db-a188800dc2fc")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="26458a06-6228-4563-8752-0be88fbc2d38")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="f318e428-67ca-491c-9550-63f03a74c87a")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="d499334e-31dd-4c3b-85d5-6d7bc8f1744d")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="3f4c606c-340d-4dfe-a4ab-885fc2ac71df")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="8cceb9b4-c2bd-489e-a3af-9d7ae0535b08")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="d76474ca-9859-4273-a21b-0fb7b6ee532d")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="1a2bbcc4-5eb9-40eb-adba-eb70596b2896")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="95891d2d-3754-43c7-85b4-df8ede63a0be")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="74cee4d5-4652-43de-b3f2-f2c3c9d851b1")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="ab87ba73-f374-4def-abd9-6473696d05a1")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="1d4bcb80-c752-4bb5-a351-0d41a6d23713")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="65b65724-e90b-4615-bec8-0352b640fe3d")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="84ca679f-e8d0-4073-9318-44baa10be32f")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="ffafc0bb-b484-4d24-85f6-0b59d2a7a547")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="cb383177-ed32-4b87-96ab-1c68103aace7")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="e63b3c01-5932-4769-af47-21adf6428f03")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="94fba562-627b-4854-88b7-dd0561668dee")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="d38ff558-298b-485a-990d-76d7dd2380a7")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="0ea0287c-b5bf-4c93-99c7-458d2c19f8c4")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="c7014639-e0f7-4d0b-8c8c-e4abefd2d5ba")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="7f14348a-6813-4dab-84f7-f1e1e7eaa4fa")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="96af94ec-898d-4dd8-9913-8b0bc5d74cc4")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="c843b5e8-da76-48d2-aec7-830a20e57911")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="25468b46-3f73-4244-8315-9c7071d1612e")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="ce45f9e3-8f3a-44a4-85a2-9104475be31a")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="57fe3ab2-2fe6-4619-99b2-9de4443b8c30")>, <selenium.webdriver.remote.webelement.WebElement (session="766fc56767efaf0ef6b004e180921b8e", element="993ae25c-919a-4051-8805-ea9429e8790e")>]
Je tente ensuite de les télécharger mais sans succès avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
for suj in liste_suj:
    # driver.refresh()
    suj.click()
qui me donne l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Traceback (most recent call last):
 
  File "/home/marco5/.local/lib/python3.10/site-packages/spyder_kernels/py3compat.py", line 356, in compat_exec
    exec(code, globals, locals)
 
  File "/.............../.........../................./ups1.py", line 78, in <module>
    suj.click()
 
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webelement.py", line 81, in click
    self._execute(Command.CLICK_ELEMENT)
 
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webelement.py", line 740, in _execute
    return self._parent.execute(command, params)
 
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
    self.error_handler.check_response(response)
 
  File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
 
StaleElementReferenceException: stale element reference: element is not attached to the page document
  (Session info: chrome=109.0.5414.119)
Il y a 6 pages à parcourir et pas mal de fichiers à télécharger sur chaque page.
Si quelqu'un a une idée pour automatiser, je suis preneur.
Bonne fin de semaine.
[edit] Au cas où, si cela peut aider :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Sélecteur CSS*:
#bot > tbody:nth-child(5) > tr:nth-child(1) > td:nth-child(4) > button:nth-child(1) > img:nth-child(1)
 
chemin CSS*:
html body div#corps form table#bot tbody tr td button.ec img
 
Xpath*:
/html/body/div[2]/form/table[2]/tbody[3]/tr[1]/td[4]/button[1]/img