I have generated test script using Selenium-IDE. It is of type Javascript-Mocha. I have an environment ready to test it locally. So, I am accessing a remote url that has insecure certificate issue.
I need to modify the generated TestScript for chrome capability to accept insecure certificate. I couldn't find any official documentation for JavaScript nor any good blog or StackOverflow answer.
Here's the generated test script:
// 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()
})
})
I tried to modify in the following way (commented lines are my modified code):
// 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()
})
})
But I am getting the following error:
How do I add accept insecure ssl certificate chrome capability using Javascript for selenium-webdriver? Any link to the official documentation for Javascript capability using selenium-webdriver, would also be very helpful.
Thanks
UPDATE: Following @balint's suggestion, I have updated the way I'm initializing the builder, like this:
var chromeCapabilities = Capabilities.chrome();
chromeCapabilities. setAcceptInsecureCerts(true);
var driver = new Builder().withCapabilities(chromeCapabilities).build();
The key part is setAcceptInsecureCerts
, which is a method I found in the source code. Inspite of this the test is still not able to accept the insecure certificate and move on to the website.