Задать вопрос
@dandyvssega
Начинаю кодить

Как сохранять установленный аддон firefox через selenium?

Всем привет,есть часть такого кода

count = 1
profile = "/home/user/.mozilla/firefox/profile" + str(count)
fp = webdriver.FirefoxProfile(profile)
directory = '/home/user/ffadns/'
files = os.listdir(directory)
def randaddon():
	addon = directory + random.choice(files)
        return addon
fp.add_extension(randaddon())
fp.add_extension(randaddon())
fp.add_extension(randaddon())
driver = webdriver.Firefox(fp)


Все работает отлично аддоны ставятся.Но после закрытия браузера их уже нет,то есть они сохраняются пока не выполнится скрипт.Как сделать чтобы эти аддоны сохранялись в профили ? Спасибо.
  • Вопрос задан
  • 537 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@dandyvssega Автор вопроса
Начинаю кодить
При установке аддона(аддон работает без перезапуска) происходят изменения в файлах что на скрине9fa610f0e9994d9994e0a694f0d92536.png

P.S. В итоге оказывается что селениум создает копию папки профиля во временной директории и работает с ней.После закрытия через driver.quit() эта папка удаляется,соответственно все что установлено и записано(аддоны ,настройки и тд) пропадают с этой папкой.Как решение пока сделал для себя вот такой код ( для профи код конечно покажется смешным извращением,но что поделать,все когда-то начинали = ) )

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select

import datetime
import time
import random

from datetime import datetime
from random import randint
from random import choice
from string import ascii_lowercase
from string import digits
import os
import shutil

from shutil import copytree, ignore_patterns



def regger():
    count = 1
    login = 'testprofile2@mail.com'
    shutil.copytree('/home/user/.mozilla/firefox/source/', "/home/user/.mozilla/firefox/"+ str("source") + str(count))
    profile = "/home/user/.mozilla/firefox/source" + str(count)

    fp = webdriver.FirefoxProfile(profile)

#   Addons
    directory = '/home/user/ffadns/'
    files = os.listdir(directory)
    addon = directory + str(random.choice(files)); addon2 = directory + str(random.choice(files)); addon3 = directory + str(random.choice(files))
    fp.add_extension(addon); fp.add_extension(addon2); fp.add_extension(addon3)
    addon_name = addon.split('/'[-1]) ; addon2_name = addon2.split('/'[-1]); addon3_name = addon3.split('/'[-1])

    driver = webdriver.Firefox(fp)
    dd = fp.profile_dir.split('/')
    tempProfile_name = dd[-2]
    shutil.move('/tmp/' + str(tempProfile_name) + '/webdriver-py-profilecopy/', '/tmp/' + str(login))
    shutil.copytree('/tmp/' + login, '/home/user/.mozilla/firefox/' + login, ignore=ignore_patterns('lock'))
    shutil.rmtree('/home/user/.mozilla/firefox/source1')
    driver.quit()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы