ChromeDriver с безголовым вызывает ElementNotVisibleException

Я новичок в селене. Мне нужен браузер без графического интерфейса, потому что проект начнется с Jenkins. Я решил использовать ChromeDriver в режиме без головы.

Когда я использую ChrimeDriver в обычном режиме, я могу щелкнуть по всем элементам:

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
}

Но когда я использую режим без головы, у меня возникает: ElementNotVisibleException: элемент не виден. Что может быть не так? Спасибо за каждую подсказку.

    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--headless");
    //chromeOptions.addArguments("--start-maximized");
    WebDriver driver = new ChromeDriver(chromeOptions);
    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();//ElementNotVisibleException dont see next li elements 
        //div[@id='accordian']/div/ul/li
    }

comment
Можете ли вы раскомментировать строку chromeOptions.addArguments("--start-maximized"); и повторить проверку?   -  person DebanjanB    schedule 15.03.2018


Ответы (2)


При работе с Selenium Client v3.11.0, драйвером Chrome v2.36 и браузером Chrome v65.x в безголовом режиме > необходимо передать следующие аргументы через экземпляр класса ChromeOptions при инициализации WebDriver и веб-браузера следующим образом:

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");
person DebanjanB    schedule 15.03.2018