Как я могу добавить свой собственный сертификат (файл .pem) в мой хромированный драйвер селена? - PullRequest
0 голосов
/ 09 января 2019

У меня есть файл docker-compose:

version: '3'
   services:
      selenium-3-chrome:
      image: selenium/standalone-chrome-debug:3.14.0
      restart: always
environment:
  TZ: Europe/Budapest
  SCREEN_WIDTH: 1920
  SCREEN_HEIGHT: 1080
  JAVA_OPTS: -Xmx128m
ports:
  - 4444:4444
  - 5900:5900
volumes:
  - /dev/shm:/dev/shm

Мой код Java:

        ChromeOptions chromeOptions = util.chromeOptions(scenario);
        chromeOptions.setHeadless(true);//default-bol is az
        chromeOptions.addArguments("--window-size=1366,768");

        DesiredCapabilities capability = DesiredCapabilities.chrome();
        capability.setCapability(ChromeOptions.CAPABILITY, chromeOptions);

        initProperies();
        if(config == null) {
            readConfiguration();
            try {
                host = System.getProperty(HOSTNAME);
            } catch(Exception e) {
                 //...
            }
        }
        // itt állítom rá a docker-es chromedriverre:
        WebDriver driver = new RemoteWebDriver(new URL(config.getConnection().getWebDriverUrl()), capability);

        driver.manage().timeouts().pageLoadTimeout(90000, TimeUnit.MILLISECONDS);

        driver.get(host+"/");

Как я могу добавить свой собственный сертификат к возможностям или chromeOptions? «/home/../rootca/lbsca.pem» -> в браузере Chrome, он находится в сертификатах «Authorities», а не в «ваших сертификатах». Или, возможно, я смогу добавить свой .pem в автономный хром докера? Надеюсь, я понял .. Извините за мой английский

1 Ответ

0 голосов
/ 09 января 2019

PhantomJSDriver может использоваться для выполнения этой функции.

DesiredCapabilities cap = DesiredCapabilities.chrome();
ImmutableMap<String, String> commandLineArguments = ImmutableMap.<String, 
String>builder()
    .put("web-security", "false")
    .put("ssl-protocol", "any")
    .put("ignore-ssl-errors", "true")
    .put("webdriver-loglevel", "DEBUG")
    .put("ssl-client-certificate-file", certificatePath)
    .put("ssl-client-key-passphrase", certificatePassword)
    .build();
String[] params = commandLineArguments.entrySet().stream()
    .map(e -> String.format("--%s=%s", e.getKey(), e.getValue()))
    .collect(Collectors.toList())
    .toArray(new String[0]);
cap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, params);
cap.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new PhantomJSDriver(cap);
driver.get(Url);

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

Chrome & Internet Explorer

capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capability.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true)

Firefox

Сначала вам нужно создать профиль, скажем, exampleProfile.
Затем откройте этот профиль в своем скрипте с помощью приведенного ниже кода;

ProfilesIni profIni = new ProfilesIni();        
FirefoxProfile exampleProfile = profIni.getProfile("exampleProfile");

После этого вам нужно установить AcceptUntrustedCertificates & AssumeUntrustedCertificateIssuer свойства.

exampleProfile.setAcceptUntrustedCertificates(true);
exampleProfile.setAssumeUntrustedCertificateIssuer(false);

Наконец, вы можете инициализировать драйвер с помощью следующего кода:

WebDriver driver = new FirefoxDriver(exampleProfile);
...