J'essaie d'énumérer tous les hyperliens (avec des fichiers à télécharger) à partir d'une page Web, puis de télécharger ces fichiers les uns après les autres. Les liens hypertexte lorsqu'ils sont cliqués nécessitent un formulaire à remplir pour lequel j'ai créé une classe pour compléter le même. Je reçois "AttributeError: l'objet 'tuple' n'a pas d'attribut 'click'" pendant l'exécution du code. J'ai joint le code, toute suggestion pour rectifier cela sera très appréciée.Python Selenium Webdriver: Énumérer les hyperliens et télécharger les fichiers
import os
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", "F:\Projects\Poli_Map\DatG_Py_Dat")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/xml")
driver = webdriver.Firefox(firefox_profile=fp)
driver.get('https://data.gov.in/catalog/variety-wise-daily-market-prices-data-cauliflower')
assert "resources" in driver.title
continue_link = driver.find_element_by_tag_name('a')
elem = driver.find_elements_by_xpath("//*[@href]")
z = elem
for links in enumerate(z):
driver.implicitly_wait(4)
for link in enumerate(links):
link.click()
class FormPage(object):
def fill_form(self, data):
driver.execute_script("document.getElementById('edit-download-reasons-non-commercial').click()")
driver.execute_script("document.getElementById('edit-reasons-d-rd').click()")
driver.find_element_by_xpath('//input[@name = "name_d"]').send_keys(data['name_d'])
driver.find_element_by_xpath('//input[@name = "mail_d"]').send_keys(data['mail_d'])
return self
def submit(self):
driver.execute_script("document.getElementById('edit-submit').click()")
data = {
'name_d': 'xyz',
'mail_d': '[email protected]',
}
time.sleep(3)
FormPage().fill_form(data).submit()
Merci d'avoir clarifié Andreas. Bien que maintenant je reçois une erreur d'assertion lors de l'exécution du code, j'ai inspecté la source de la page avant d'inclure les "ressources" dans driver.title. Est-ce que je rate quelque chose ici? – Cashi
J'ai simplement commenté cette ligne, car je n'étais pas sûr de ce que votre intention avec l'affirmation était. S'il vous plaît clarifier votre intention si c'est une caractéristique. –
Bonjour Andreas, L'objectif est de localiser et télécharger tous les liens xml dans la page Web. J'ai mis à jour le code maintenant, mais je rencontre un problème avec le sélecteur CSS https://stackoverflow.com/questions/46784644/python-selenium-css-selector-element-is-not-visible – Cashi