Comment activer ChromeDriver pour utiliser le cache du navigateur ou le stockage local avec sélénium python
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
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.