我正在尝试使用Selenium 4.1.3、Chrome 100和Java 18运行一些测试。测试需要使用特定的Chrome配置文件。
我的代码在Chrome有标题的情况下可以正常工作,但在没有标题的情况下就不工作了**(不使用指定的Chrome配置文件)**。
我的代码如下(有一个布尔标志 headless,改变值使程序运行headed vs. headless -和工作vs.不工作):
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();
}
}
我试着玩选项(做了很多尝试),在类似的线程中,我没有找到任何解决方案,我假设相同的代码应该在有头或无头时运行类似,但有一种差异,我找不到。
有什么想法吗?
谢谢
1条答案
按热度按时间ctrmrzij1#
还有一个信息:看起来如果我创建了一个配置文件从headless chrome (我刚刚做了一些网页抓取的网站上,我想登录),然后它是保持如果我再次运行程序.看起来,headed和headess配置文件不互相交谈,即使看起来工作在相同的方式(或几乎在相同的方式).