Как установить расширение на постоянной основе в Geckodriver - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно протестировать Firefox, используя расширение.Я хочу автоматизировать тестирование и посетить несколько веб-сайтов.

Я установил Selenium, и он открывается в geckodriver.Тем не менее, расширение не существует.Я могу установить его вручную с about:debugging, но проблема в том, что я хочу, чтобы тест Selenium запустил драйвер gecko, пока расширение уже существует.Как это сделать?Как постоянно установить расширение в geckodriver, чтобы оно было, когда я запускаю geckodriver из селена?

РЕДАКТИРОВАТЬ: Я также пытался установить расширение (добавить его вбраузер) с веб-сайтов расширений Firefox.Он добавляется, но как только я закрываю окно геккона, расширение исчезает при следующем запуске.Как установить его постоянно?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Примечание: OP не указал язык, поэтому этот ответ для Python.Другие привязки языка Selenium WebDriver имеют аналогичные механизмы для создания профилей и добавления расширений.


Вы можете устанавливать расширение каждый раз, когда создаете экземпляр драйвера.

Сначала загрузитерасширение (файл XPI), из которого вы хотите: https://addons.mozilla.org.

Затем в своем коде ... создайте FirefoxProfile() и используйте метод add_extension() для добавления расширения.Затем вы можете создать экземпляр драйвера с помощью этого профиля.

Например, при этом будет запущен Firefox с недавно созданным профилем, содержащим расширение «HTTPS Everywhere»:

from selenium import webdriver

profile = webdriver.FirefoxProfile() 
profile.add_extension(extension='https_everywhere-2019.1.31-an+fx.xpi')
driver = webdriver.Firefox(firefox_profile=profile) 
0 голосов
/ 21 февраля 2019

Вы можете установить постоянное расширение внутри определенного профиля Firefox и использовать его.Для этого вам необходимо выполнить следующие шаги:

  • Вам необходимо создать новый профиль Firefox вручную (например, FirefoxExtensionProfile ), следуя инструкциям на Создание нового профиля Firefox в Windows .
  • Открытие просмотра Firefox вручную и вызов URL-адреса https://addons.mozilla.org/en-US/firefox/
  • В поиске Поле поиск расширения, например, HTTPS Everywhere .
  • Нажмите на результат поиска и установите / включите (в случае если ранее установлено ив настоящее время отключено) расширение.
  • Теперь вы можете использовать следующее решение Java , чтобы открыть профиль Firefox FirefoxExtensionProfile , содержащий расширение HTTPS Everywhere

    • Кодовый блок:

      package A_MozillaFirefox;
      
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
      import org.openqa.selenium.firefox.FirefoxOptions;
      import org.openqa.selenium.firefox.FirefoxProfile;
      import org.openqa.selenium.firefox.ProfilesIni;
      
      public class A_FirefoxProfile_dc_opt {
      
          public static void main(String[] args) {
      
              System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
              ProfilesIni profile = new ProfilesIni();
              FirefoxProfile testprofile = profile.getProfile("FirefoxExtensionProfile");
              FirefoxOptions opt = new FirefoxOptions();
              opt.setProfile(testprofile);
              WebDriver driver =  new FirefoxDriver(opt);
              driver.get("https://www.google.com");
          }
      }
      
    • Снимок браузера:

Extension_HTTPS Everywhere

0 голосов
/ 19 февраля 2019

Вам нужно запустить geckdriver с существующим профилем, указав путь к профилю firefox

Для python вы можете сделать это следующим образом:

profile = FirefoxProfile('/home/student/.mozilla/firefox/gwi6uqpe.Default') // change this path
browser = webdriver.Firefox(firefox_profile=profile)

Для C # вы можете сделать это:

string path = @"C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles\myi5go1k.default";
FirefoxProfile ffprofile = new FirefoxProfile(path);
Driver = new FirefoxDriver(ffprofile);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...