Selenium - Java - Chrome 在无头时不使用提供的用户数据目录



我正在尝试使用Selenium 4.1.3Chrome 100Java 18运行一些测试。该测试要求使用特定的Chrome配置文件。

当Chrome被引导时,我的代码可以很好地工作,但在无头时不工作(不使用指定的Chrome配置文件(

我的代码如下(有一个布尔标志headless,改变值会使程序运行时有头与无头,工作与不工作(:

public static void main(String[] args) {
try {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
//System.setProperty("webdriver.chrome.verboseLogging", "false");
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
options.addArguments("--start-maximized");
options.addArguments("start-maximized");
boolean headless = true;
if (headless) {
options.addArguments("--headless");
options.addArguments("--remote-debugging-port=9222");
//options.setHeadless(true);
options.setAcceptInsecureCerts(true);
}
options.addArguments("--log-level=3");
options.addArguments("--silent");
options.addArguments("no-sandbox");
options.addArguments("--no-sandbox");
options.addArguments("enable-automation");
options.addArguments("--disable-infobars");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-gpu");
options.addArguments("--disable-custom-jumplist");
options.addArguments("--allow-no-sandbox-job");
options.addArguments("--lang=it-IT");
String userData = "C:\Chrome\fravotto19750619\";
options.addArguments("--user-data-dir=" + userData);
//String profileDir = "";
//chromiumOptions.addArguments("--profile-directory=" + profileDir);
ChromiumDriver driver = new ChromeDriver(options);
driver.navigate().to("https://www.gmail.com");
String fileName = "test.jpeg";
try {
File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
File dst = new File(fileName);
try (InputStream in = new FileInputStream(src)) {
try (OutputStream out = new FileOutputStream(dst)) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
in.readLine();
driver.quit();
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}

我试着使用选项(做了很多尝试(,在类似的线程中,我没有找到任何解决方案,我认为相同的代码在有头或无头时应该类似地运行,但有一点我找不到。

有什么想法吗?

感谢

还有一条信息:如果我用无头铬创建了一个配置文件(我刚刚在我想登录的网站上做了一些网络抓取(,那么如果我再次运行程序,它就会被保留。即使看起来工作方式相同(或几乎相同(,有头脑和无头脑的个人资料似乎也不会相互交谈。

最新更新