首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无头提升ChromeDriver ElementNotVisibleException

无头提升ChromeDriver ElementNotVisibleException
EN

Stack Overflow用户
提问于 2018-03-15 07:27:50
回答 2查看 1.6K关注 0票数 2

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

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

代码语言:javascript
复制
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不可见。有什么不对的?谢谢你的每一条线索。

代码语言:javascript
复制
    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
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 10:14:07

在无头模式下使用Selenium Client v3.11.0、ChromeDriverv2.36和ChromeOptions v65.x时,您需要在初始化ChromeOptions和WebDriver浏览器时,通过一个WebDriver类实例传递以下参数:

代码语言:javascript
复制
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");
票数 1
EN

Stack Overflow用户

发布于 2019-11-04 08:32:13

您需要通过"--headless",铬选项,如下所示。

代码语言:javascript
复制
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。所以最好你能处理好警报箱。

代码语言:javascript
复制
                    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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49293706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档