it-swarm.com.de

Wie kann ich verhindern, dass Selenium mit dem Web-Treiber temporäre Firefox-Profile erstellt?

Ich verwende die Selenium Web Driver API mit Java. Jedes Mal, wenn ich meine Testfälle debuggen möchte, wird im Verzeichnis für temporäre Dateien ein temporäres Profil für Firefox erstellt. Dies ist in zweierlei Hinsicht ein Kopfschmerz.

  1. Das Erstellen eines Profils nimmt definitiv unnötig Zeit in Anspruch und nimmt unnötig Platz in Anspruch.
  2. Ich kann keine Addons installieren, die verfügbar sind, wenn ich das nächste Mal meine Testfälle starte.

Wie komme ich darum herum?

52

Sie können steuern, wie der Firefox-Treiber das Profil auswählt. Setze das webdriver.firefox.profile -Eigenschaft auf den Namen des Profils, das Sie verwenden möchten. Die meisten Leute halten dies für eine schlechte Idee, da Sie alle Cookies, Cache-Inhalte, etc erben werden. von den vorherigen Verwendungen des Profils, aber es ist erlaubt, wenn Sie es wirklich tun möchten.

Beispielsweise:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);

[~ # ~] Update [~ # ~] - Von Ranhir

Wie ich mit Java umgegangen bin

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

Dann habe ich die Einstellungen in Firefox geändert, um alle Cookies und den Cache beim Beenden zu löschen. Schau hier wie es geht.

31
Ross Patterson

Seien Sie sicher, dass Sie anrufen

driver.quit();

anstatt von

driver.close();

close () löscht keine temporären Dateien

22
Szabolcs Filep

Die Antwort war eigentlich ziemlich einfach, nachdem ich diese Frage durchgesehen hatte, wo ich die Dokumentation gefunden hatte. Ich fand die Klasse FirefoxProfile und der Konstruktor übernahm den Pfad zum Firefox-Profil.

WebDriver driver = null;
FirefoxProfile profile = new FirefoxProfile(new File("C:\\Users\\Ranhiru\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\qp1nizdo.Selenium"));
driver = new FirefoxDriver(profile);

Ich habe ein neues Profil erstellt, indem ich "Firefox.exe" mit der Markierung - p ausgeführt habe.

Firefox.exe -p

Installierte die Erweiterungen, die ich für dieses Profil benötigte, und ich konnte loslegen! :)

Update

Es ist egal, ob Sie ein Profil zuweisen oder nicht, das temporäre Profil im temporären Ordner wird trotzdem erstellt. Durch das Erstellen und Zuweisen eines Profils haben Sie die Möglichkeit, firebug/xpather/Ihre Lieblingserweiterung beim Testen zu verwenden.

3

Sie können das FirefoxWebDriver mit den gewünschten Plugins laden, indem Sie die addExtension(File) -Methode in der FirefoxProfile -Klasse aufrufen.

Beispiel:

try {
    File firebug = new File("C:\\FFPlugins\\firebug-1.7.3.xpi");
    File xpathChecker = new File("C:\\FFPlugins\\xpath_checker-0.4.4-fx.xpi");
    profile.addExtension(firebug);
    profile.setPreference("extensions.firebug.currentVersion", "1.7.3");
    profile.addExtension(xpathChecker);
    profile.setPreference("extensions.xpath_checker.currentVersion", "0.4.4");
} catch(IOException e) {
    e.printStackTrace();
}
driver = new FirefoxDriver(profile);
3

Ich habe ein benutzerdefiniertes Profil durch Ausführen des Befehls erstellt:

firefox -profileManager 

(Füge dann alle Ausnahmen hinzu, die ich benötige - da Selen jedes Mal ein sauberes Profil/eine saubere Instanz öffnet, wenn die Ausnahmen verloren gehen.)

Ich habe meinen Firefox direkt mit diesem Profil erstellt, indem ich Folgendes verwendet habe:

private static String profilePath = "C:\\fitnesse\\Selenesse\\FFProfiles";
private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); 
private static IWebDriver driver = new FirefoxDriver(ffprofile);
1
Woodman81

Sie können immer das Profil mit dem Namen default verwenden, das standardmäßig vom Benutzer verwendet wird. Dort haben Sie alle Ihre Cookies, Plugins usw. und können sie ohne Komplikationen verwenden

System.setProperty("webdriver.firefox.profile", "default");

bevor Sie den WebDriver erstellen

WebDriver driver = new FirefoxDriver();

zum Erstellen eines neuen Profils können Sie in der Shell firefox -p was dir zeigen wird

Add new profile to Firefox

und erhalte ein neues Profil neben dem bereits existierenden default. Das gibt dir die Freiheit, die du willst.

0
EliuX

Sie können Selenium nicht daran hindern, temporäre Dateien zu erstellen, auch wenn Sie eine explizit angegeben haben. Sie können es jedoch nach Abschluss der Tests löschen.

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

Getestet unter MacOS und Ubuntu.

0
Max
  1. Starten Sie Firefox mit: Firefox -P
  2. Erstellen Sie ein neues Profil (z. B. webdriver1), fügen Sie die erforderlichen Plugins hinzu usw.
  3. Fügen Sie Ihrem Testfall hinzu:

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    
0
jnr