Java 无头镀铬驱动器引发ElementNotVisibleException

Java 无头镀铬驱动器引发ElementNotVisibleException,java,selenium,selenium-webdriver,selenium-chromedriver,google-chrome-headless,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,Google Chrome Headless,我是硒的新手。我需要一个没有图形界面的浏览器,因为该项目将从詹金斯开始。我决定在无头模式下使用ChromeDriver 在正常模式下使用ChromeDriver时,我可以单击所有元素: WebDriver driver = new ChromeDriver(); List<WebElement> allElem = driver.findElements(By.ByXPath("//div[@id='accordian']/div/ul/li")); for(int i=0; i&

我是硒的新手。我需要一个没有图形界面的浏览器,因为该项目将从詹金斯开始。我决定在无头模式下使用ChromeDriver

在正常模式下使用ChromeDriver时,我可以单击所有元素:

WebDriver driver = new ChromeDriver();
List<WebElement> allElem = driver.findElements(By.ByXPath("//div[@id='accordian']/div/ul/li"));

for(int i=0; i<allElem.getSize(); i++){
   allElem.get(i).click(); // is ok
}
WebDriver=new ChromeDriver();
List-allegem=driver.findElements(By.ByXPath(“//div[@id='accordian']]/div/ul/li”);
对于(int i=0;i在无头模式下使用Selenium Client v3.11.0、Chrome Driver v2.36和Chrome Browser v65.x时,在初始化WebDriver和Web浏览器时,需要通过ChromeOptions类的实例传递以下参数,如下所示:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("start-maximized");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments("--disable-extensions"); 
WebDriver driver =  new ChromeDriver(chromeOptions);
driver.get("https://www.google.co.in");
您需要通过
“--headless”
,chrome选项,如下所示

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver =  new ChromeDriver(chromeOptions);
有关chrome选项的完整列表,请参考以下URL。它详细解释了每个命令行开关

在使用headless模式时,由于没有处理弹出的警报框,我遇到了
org.openqa.selenium.unhandleAlertException
。因此,如果您能够处理警报框,那就更好了

                    String alertText = alert.getText();
                    System.out.println("ERROR: (ALERT BOX DETECTED) - ALERT MSG : " + alertText);
                    alert.accept();
                    File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
                    String imageDetails = "D://Images"
                    File screenShot = new File(imageDetails).getAbsoluteFile();
                    FileUtils.copyFile(outputFile, screenShot);
                    System.out.println("Screenshot saved: {}" + imageDetails);
                    driver.close();

您能否取消注释行
chromeOptions.addArguments(“--start maximized”);
并重新测试?
                    String alertText = alert.getText();
                    System.out.println("ERROR: (ALERT BOX DETECTED) - ALERT MSG : " + alertText);
                    alert.accept();
                    File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
                    String imageDetails = "D://Images"
                    File screenShot = new File(imageDetails).getAbsoluteFile();
                    FileUtils.copyFile(outputFile, screenShot);
                    System.out.println("Screenshot saved: {}" + imageDetails);
                    driver.close();