我是新来的硒。我需要一个没有图形界面的浏览器,因为这个项目将从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: element不可见。有什么不对的?谢谢你的每一条线索。
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
}发布于 2018-03-15 10:14:07
在无头模式下使用Selenium Client v3.11.0、ChromeDriverv2.36和ChromeOptions v65.x时,您需要在初始化ChromeOptions和WebDriver浏览器时,通过一个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");发布于 2019-11-04 08:32:13
您需要通过"--headless",铬选项,如下所示。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver(chromeOptions);有关铬选项的整个列表,请参考以下URL。它详细解释了每个命令行的切换。
https://peter.sh/experiments/chromium-command-line-switches/
在使用无头模式时,由于没有处理弹出警报框,我遇到了org.openqa.selenium.UnhandledAlertException。所以最好你能处理好警报箱。
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();https://stackoverflow.com/questions/49293706
复制相似问题