Comment activer ChromeDriver pour utiliser le cache du navigateur ou le stockage local avec sélénium python

Oct 11 2020

J'essayais d'automatiser un site Web et c'est une PWA . J'ai besoin des données de mise en cache pour ce site car le chargement prend trop de temps, une fois chargé, c'est assez rapide. Mais chaque fois que j'exécute mes scripts, chrome démarre une nouvelle instance chargeant chaque ressource depuis le début, comment puis-je activer avec force l'utilisation du cache ou des données de stockage local?

class ProductAdder:
    def __init__(self):
        self.url = 'https://testsite.com/'
        self.driver = webdriver.Chrome(PATH)
        self.driver.get(self.url)

    def login(self):
        wait = WebDriverWait(self.driver, 120)
        wait.until(EC.presence_of_element_located((By.XPATH,"//input[@name='email']"))).send_keys('[email protected]')
        wait.until(EC.presence_of_element_located((By.XPATH,"//input[@name='password']"))).send_keys('test')
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,".MuiButton-label"))).click()



    def add(self):
        pass

if __name__ == '__main__':
    selenium = ProductAdder()
    selenium.login()

Réponses

4 akane Oct 12 2020 at 07:37

Oui, vous avez raison, à partir des documentations sur les fonctionnalités de Chrome

Utiliser un profil personnalisé (également appelé répertoire de données utilisateur)
Par défaut, ChromeDriver crée un nouveau profil temporaire pour chaque session.

Pour cela, vous devez créer et charger un profil personnalisé par user-data-dir.

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Dans votre cas, cela pourrait ressembler à ceci.

class ProductAdder:
    def __init__(self):
        self.url = 'https://testsite.com/'
        options = webdriver.ChromeOptions()
        # Path To Custom Profile
        options.add_argument("user-data-dir=C:\\Path\\To\\Custom\\Profile")
        self.driver = webdriver.Chrome(PATH, options=options)
        self.driver.get(self.url)

De manière basique, mais bien sûr à adapter pour utiliser l'implémentation comme vous le souhaitez. Vous pouvez vérifier le profil chargé en accédant àchrome://version

Il devrait également être OK options.add_argument('--profile-directory=<profile>')pour charger le profil.