it-swarm.com.de

Laden Sie das Chrome-Profil mit Selenium WebDriver mit Java

Ich habe einige Probleme damit, dass Selen ein Chromprofil lädt.

String pathToChrome = "driver/chromedriver.exe";
System.setProperty("webdriver.chrome.driver", pathToChrome);

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
String chromeProfile = "C:\\Users\\Tiuz\\AppData\\Local\\Google\\Chrome\\User Data\\Default";
ArrayList<String> switches = new ArrayList<String>();
switches.add("--user-data-dir=" + chromeProfile);
capabilities.setCapability("chrome.switches", switches);
WebDriver driver = new ChromeDriver(capabilities);
driver.get("http://www.google.com");

Es fängt gut an und funktioniert perfekt, aber ich möchte, dass das Standardprofil geladen wird, weil ich es mit einigen aktivierten Erweiterungen testen und einige Einstellungen testen möchte.

Hat jemand eine Idee, warum dieser Code nicht funktioniert?

Ich habe es mit Selen 2.29.1 und 2.28.0 mit Chromedriver 26.0.1383.0 unter Windows 7 x64 getestet.

12
Tiuz

Dies ist eine alte Frage, aber ich hatte immer noch ein Problem damit, es zum Laufen zu bringen, also habe ich mich eingehender damit beschäftigt, um zu verstehen, was passiert. Die Antwort von @PrashanthSams ist korrekt, aber ich habe am Ende des Profilpfads \Default falsch hinzugefügt 

Ich habe festgestellt, dass Chrome \Default an den im user-data-dir angegebenen Profilpfad anhängt. Wenn also Ihr Profilpfad angegeben ist als:

user-data-dir=C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\

es wird \Default anhängen und Sie landen bei:

C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default\Default

dies entspricht nicht dem Profil, das Sie erhalten würden, wenn Sie Chrome normalerweise unter diesem Benutzerprofil öffnen würden. 

Sie können Ihre Einstellungen auch überprüfen, wenn Sie eine Eingabeaufforderung öffnen, zum ausführbaren Verzeichnis von Chrome navigieren und Chrome mit den folgenden Optionen ausführen:

chrome.exe --user-data-dir="C:\Users\user_name\AppData\Local\Google\Chrome\User Data"

Schließlich können Sie in Chrome zu einer neuen Registerkarte wechseln und zu chrome://version/ wechseln. Dort wird das tatsächliche Profil angezeigt, das gerade verwendet wird. Es wird wie folgt aufgelistet: 

Profilpfad C:\Benutzer\Benutzername\AppData\Local\Google\Chrome\Benutzerdaten\Standard

24
JasonG

Diese Kombinationen haben für mich einen Trick gebracht :)

System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
16
Prashanth Sams

Ich habe in Windows versucht und folgenden Code funktioniert für mich: 

String userProfile= "C:\\Users\\user_name\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\";
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir="+userProfile);
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");

Woher weiß man, ob es funktioniert?  
Eine Möglichkeit zu wissen ist, das Programm zweimal auszuführen, ohne die vorherige Instanz des Chrome zu töten. Wenn das Profil gültig ist, sehen Sie die zweite Instanz "als neue Registerkarte" im ersten Browserfenster. Wenn es nicht funktioniert, erhalten Sie die zweite Instanz "als neues Browserfenster".

2
Nobal

Pfad, in dem Chrome die Profile unter Linux speichert.

String chromeProfilePath = "/home/(user)/.config/google-chrome/Profile3/";

Erstellen eines ChromeOptions-Objekts, Deaktivieren der Erweiterungen und Hinzufügen des gewünschten Profils durch ".addArguments".

ChromeOptions chromeProfile = new ChromeOptions();
chromeProfile.addArguments("chrome.switches", "--disable-extensions");
chromeProfile.addArguments("user-data-dir=" + chromeProfilePath);

Wie bereits von JasonG erwähnt, wird Google-Chrome nach diesem Punkt\Default an den von Ihnen angegebenen String anhängen.

Es gibt einen "/ Default" -Ordner im "/ Profile3" -Verzeichnis, also habe ich ...

Ich habe den Inhalt von "/ Profile3" in den Ordner "/ Default" kopiert.

Stellen Sie die Browsersystemeigenschaften und den Pfad wie gewohnt ein, rufen Sie den Konstruktor auf, der eine ChromeOption empfängt, und es funktioniert einwandfrei.

WebDriver driver = new ChromeDriver(chromeProfile);

Laut dem ChromeDriver-Wiki ist dies ein bekanntes Problem und ist derzeit nicht möglich.

https://code.google.com/p/Selenium/wiki/ChromeDriver

1
tmacblane

Ich habe das Standardprofil in einen anderen Ordner kopiert und dann eine Verbindung zu dieser Kopie hergestellt

ChromeOptions options = new ChromeOptions();
options.AddArgument("--user-data-dir=C:\\AnyFolder");
driver = new ChromeDriver(options);

Es verwendet also das Standardprofil

1
user2686009