java - selenium headless chrome java忽略ssl错误

标签 java google-chrome selenium ssl-certificate selenium-chromedriver

在 unix 中使用 java 进行的 Selenium headless chrome 测试返回空页面源作为

<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>

这是由于访问了安全的 http (https) 网站。

有没有办法忽略 ssl 证书问题?请告诉我如何忽略它。

Selenium 版本 3.7.1..java 版本 1.8.0.144 chrome 驱动程序版本 2.33 Chrome 版本 62+

我尝试了以下选项..但它似乎不起作用。

1. ChromeOptions options = new ChromeOptions();
            options.setAcceptInsecureCerts(true);
            options.setHeadless(true);DesiredCapabilities capabilities = 
   DesiredCapabilities.chrome();
                capabilities.setCapability("chrome.switches", Arrays.asList("--
                ignore-certificate-errors,--web-security=false,--ssl-
                protocol=any,--ignore-ssl-errors=true"));
   capabilities.setCapability(ChromeOptions.CAPABILITY, options);
   driver = new ChromeDriver(capabilities);

2. DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true);
        capabilities.setCapability (CapabilityType.ACCEPT_INSECURE_CERTS, true);
        capabilities.setCapability(ChromeOptions.CAPABILITY, options);
   driver = new ChromeDriver(capabilities);

我这样做的方式正确吗?让我知道让它发挥作用的诀窍

提前致谢

完整代码:

WebDriver driver = null;

        try {

            String filePath = "Path to driver";
            System.setProperty("webdriver.chrome.driver", filePath);

            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless");
            options.addArguments("--no-sandbox");
            options.setAcceptInsecureCerts(true);
            options.addArguments("test-type");

            String[] switches = {"--ignore-certificate-errors"};

            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability("chrome.switches", Arrays.asList(switches));
            capabilities.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true);
            capabilities.setCapability(ChromeOptions.CAPABILITY, options);

            driver = new ChromeDriver(capabilities);
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get("https://meta.stackexchange.com");
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            System.out.println("PAGE SOURCE : \n" + driver.getPageSource());

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            driver.close();
            driver.quit();
        }

最佳答案

现在您可以在选项中添加功能。请尝试以下操作:

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--disable-dev-shm-usage");
        options.addArguments("--no-sandbox");
        options.addArguments("--headless", "--window-size=1920,1200", "--ignore-certificate-errors");
        options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        options.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
        driver = new ChromeDriver(options);

关于java - selenium headless chrome java忽略ssl错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47747654/

相关文章:

java - 将可见按钮移到不可见按钮上

java - 如何查找javac任务中的内存泄漏

javascript - 打开 Chrome 扩展程序时出现 Service Worker TypeError

python - 在 Python 中截取 url 的更好方法

html - firefox 和 chrome 中字体渲染的细微差别

Selenium 2.0网络驱动程序: implementation of isTextPresent

java - Java 中 long 到 int 的转换不起作用

java - 如何获取 selenium 上所有打开的窗口和浏览器的处理程序?

java - 如何处理使用 Selenium Webdriver 的提示警报

selenium - Selenium 中的 "clickable"元素是否也意味着它是 "visible and present"?