samedi 25 avril 2020

Trying to run multiple selenium tests but getting ''cannot read property 'get' of undefined'

I am relatively new to selenium and javascript. I am trying to run multiple seleniumjs test files sequentially. To do this I have created another js file (testAll) in which I call all the exported test functions I have created in separate files. I am running into an issue with where I am defining the driver and feel like I'm in a bit of a catch 22. When I define the driver within the test async function itself it works fine but when I then transfer the driver definition to my testAll file to avoid multiple browser windows opening up then I receive a 'cannot read property 'get' of undefined' message. This must be referring to my driver as an undefined variable but I can't see a way to get around this. I have included an example test.js file and my testAll.js file code below:

testAll.js:

const servicesPage = require('./servicesPage');
const organisations = require('./organisations');
const {By , Builder, until} = require('selenium-webdriver');

const allServices = async () => {
const driver = await new Builder().forBrowser('chrome').build();

try {
    await servicesPage(driver);
    await organisations(driver);
}
finally{
    await driver.quit();
}
}

allServices();

test.js:

//Setup
const {By , Builder, until} = require('selenium-webdriver');
const properties = require('../test_Properties')
const authentication = require('../mainAuth');
const assert = require('assert');

 const organisations = async (driver) => {
   try {
    //Execution
    await driver.get(properties.servicesUrls.orgsPage);
    await authentication(driver);
    await driver.wait(until.elementLocated(By.linkText('Request an organisation')), 7000);
    await driver.findElement(By.linkText('Request an organisation')).click();
    //Assert organisations request page and click back
    let rqstOrg = await driver.findElement(By.tagName('h1')).getText();
    assert.equal(rqstOrg , 'Request an organisation' , 'Request an organisation heading does not 
    match');
    await driver.findElement(By.className('link-back')).click();
    //Assert organisations page
    let orgTitle = await driver.getTitle();
    assert.equal(orgTitle , 'Organisations' , 'Organisations title does not match');
    await driver.findElement(By.linkText('Sign out')).click();
} catch (e) {
    throw e;
}
};

module.exports = organisations;

Aucun commentaire:

Enregistrer un commentaire