Как принять незащищенные сертификаты в Chrome с помощью Selenium-Webdriver для JavaScript? - PullRequest
0 голосов
/ 28 января 2020

Я сгенерировал тестовый скрипт с использованием Selenium-IDE. Это типа Javascript -Моча. У меня есть среда, готовая проверить это локально. Итак, я обращаюсь к удаленному URL-адресу, на котором есть проблема с небезопасным сертификатом.

Мне нужно изменить сгенерированный TestScript для возможности chrome для принятия незащищенного сертификата. Я не смог найти ни официальной документации для JavaScript, ни хорошего блога или ответа StackOverflow.

Вот сгенерированный тестовый скрипт:

// Generated by Selenium IDE

const {
  Builder,
  By,
  Key,
  until
} = require('selenium-webdriver')
const assert = require('assert')

describe('work', function() {
  this.timeout(30000)
  let driver
  let vars


  beforeEach(async function() {
    driver = await new Builder().forBrowser('chrome').build()
    vars = {}
  })

  afterEach(async function() {
    driver = await new Builder().forBrowser('chrome').build()
    await driver.quit();
  })
  it('work', async function() {
    await driver.get("https://kwras.eu.company.com:10016/front/v9/signin")
    await driver.manage().window().setRect(704, 584)
    await driver.findElement(By.id("prod-signin-basic-signin-form-username")).sendKeys("srishti")
    await driver.findElement(By.id("prod-signin-basic-signin-form-password")).sendKeys("srpass")
    await driver.findElement(By.id("ui-id-1")).click()
    await driver.findElement(By.css(".icon-ham-menu")).click() {
      const element = await driver.findElement(By.css(".icon-ham-menu"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-17 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-17 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)") {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-34 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-34 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)") {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-49 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-49 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.id("ui-id-55")).click() {
      const element = await driver.findElement(By.id("ui-id-55"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)")
    await driver.findElement(By.css("#searchData\\3A_hdrCol0_-2063926153_2 > #dottedMenu .oj-button-label > .demo-icon")).click() {
      const element = await driver.findElement(By.css("#searchData\\3A_hdrCol0_-2063926153_2 > #dottedMenu .oj-button-label > .demo-icon"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-63 > span")).click()
    await driver.findElement(By.css("#oj-collapsible-Identification-header > .font16")).click()
    await driver.findElement(By.css("#oj-collapsible-Brand-header > .font16")).click()
    await driver.findElement(By.css("#oj-collapsible-Dates-header > .oj-component-icon")).click()
  })
})

Я попытался изменить следующим образом ( строки с комментариями - это мой измененный код):

// Generated by Selenium IDE
//var webdriver = require("selenium-webdriver")
const {
  Builder,
  By,
  Key,
  until
} = require('selenium-webdriver')
const assert = require('assert')

describe('work', function() {
  this.timeout(30000)
  let driver
  let vars
  //var cbtHub = "http://localhost:4444/wd/hub  ";
  //var caps = {
  //  browserName: 'Chrome',
  //  acceptSslCerts: true,

  //};

  beforeEach(async function() {
    //try {
    //  driver = new webdriver.Builder()
    //    .usingServer(cbtHub)
    //    .withCapabilities(caps)
    //    .build();
    //} catch (err) {
    //  console.log(err);
    //  handleFailure(err, driver)
    //}
    driver = await new Builder().forBrowser('chrome').build()
    vars = {}

  })
  afterEach(async function() {
    driver = await new Builder().forBrowser('chrome').build()
    await driver.quit();
  })
  it('work', async function() {
    await driver.get("https://kwras.eu.company.com:10016/front/v9/signin")
    await driver.manage().window().setRect(704, 584)
    await driver.findElement(By.id("prod-signin-basic-signin-form-username")).sendKeys("srishti")
    await driver.findElement(By.id("prod-signin-basic-signin-form-password")).sendKeys("srpass")
    await driver.findElement(By.id("ui-id-1")).click()
    await driver.findElement(By.css(".icon-ham-menu")).click() {
      const element = await driver.findElement(By.css(".icon-ham-menu"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-17 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-17 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)") {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-34 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-34 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)") {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-49 > .oj-navigationlist-item-label")).click() {
      const element = await driver.findElement(By.css("#ui-id-49 > .oj-navigationlist-item-label"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.id("ui-id-55")).click() {
      const element = await driver.findElement(By.id("ui-id-55"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    }
    await driver.executeScript("window.scrollTo(0,0)")
    await driver.findElement(By.css("#searchData\\3A_hdrCol0_-2063926153_2 > #dottedMenu .oj-button-label > .demo-icon")).click() {
      const element = await driver.findElement(By.css("#searchData\\3A_hdrCol0_-2063926153_2 > #dottedMenu .oj-button-label > .demo-icon"))
      await driver.actions({
        bridge: true
      }).moveToElement(element).perform()
    } {
      const element = await driver.findElement(By.CSS_SELECTOR, "body")
      await driver.actions({
        bridge: true
      }).moveToElement(element, 0, 0).perform()
    }
    await driver.findElement(By.css("#ui-id-63 > span")).click()
    await driver.findElement(By.css("#oj-collapsible-Identification-header > .font16")).click()
    await driver.findElement(By.css("#oj-collapsible-Brand-header > .font16")).click()
    await driver.findElement(By.css("#oj-collapsible-Dates-header > .oj-component-icon")).click()
  })
})

Но я получаю следующую ошибку: enter image description here

Как добавить допустимый небезопасный сертификат ssl chrome Возможность использования Javascript для селена-webdriver? Любая ссылка на официальную документацию для возможности Javascript с использованием selenium-webdriver, также будет очень полезна.

Спасибо

ОБНОВЛЕНИЕ: Следуя предложению @ balint, я имею обновлен способ инициализации компоновщика, например:

var chromeCapabilities = Capabilities.chrome();
chromeCapabilities. setAcceptInsecureCerts(true);
var driver = new Builder().withCapabilities(chromeCapabilities).build();

Ключевая часть - setAcceptInsecureCerts, это метод, который я нашел в исходном коде . Несмотря на это, тест по-прежнему не может принять незащищенный сертификат и перейти на веб-сайт.

...