K
K
Kirill Petrov2016-10-10 11:08:36
Python
Kirill Petrov, 2016-10-10 11:08:36

How to save installed firefox addon via selenium?

Hello everyone, there is a part of such code

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)

Everything works fine, addons are installed. But after closing the browser, they are no longer there, that is, they are saved until the script is executed. How can I make these addons saved in profiles? Thank you.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
K
Kirill Petrov, 2016-10-10
@dandyvssega

When installing the addon (the addon works without restarting), changes occur in the files that are on the 9fa610f0e9994d9994e0a694f0d92536.png
PS screen. As a result, it turns out that selenium creates a copy of the profile folder in the temporary directory and works with it. After closing via driver.quit(), this folder is deleted, respectively, everything that is installed and recorded (addons, settings, etc.) disappear with this folder. As a solution, I have made this code for myself (for the pros, of course, the code will seem like a ridiculous perversion, but what can you do, everyone once started =) )

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 = '[email protected]'
    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()

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question