How to setup Selenium grid remotely in protractor

2019-07-30 00:52发布

问题:

I have my conf.js file which runs fine locally. But now as per my requirement I need to run it in a bamboo task. Since my code is going to run on server there is a remote selenium webdriver that i need to add to the conf.js.

Can you please help me out how it is done? My conf.js looks like this :

exports.config = {
     params: {
        url: "URL",
        testroadname:"Testing123",
        sleeptime:1000

    },
  directConnect: true,




  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'chrome'
  },

  // Framework to use. Jasmine is recommended.
  framework: 'jasmine',

  // Spec patterns are relative to the current working directly when
  // protractor is called.
  specs: ['mapfeedback.js'],

  // Options to be passed to Jasmine.
  jasmineNodeOpts: {

    defaultTimeoutInterval: 30000
  }

回答1:

You have to remove directConnect = true and just give the seleniumAddress in your config or setup an environment.js file- you can simply add your remote selenium's address and fire up your protractor tests, following will be your environment.js-

  // Common configuration files with defaults plus overrides from environment vars
var webServerDefaultPort = 8081;

module.exports = {
// The address of a running selenium server.You can add your remote address here
seleniumAddress:
(process.env.SELENIUM_URL || 'http://localhost:4444/wd/hub'),

// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName':
    (process.env.TEST_BROWSER_NAME || 'chrome'),
'version':
    (process.env.TEST_BROWSER_VERSION || 'ANY')
},

 // Default http port to host the web server
webServerDefaultPort: webServerDefaultPort,

 // Protractor interactive tests
 interactiveTestPort: 6969,

 // A base URL for your application under test.
 baseUrl:
'http://' + (process.env.HTTP_HOST || 'localhost') +
      ':' + (process.env.HTTP_PORT || webServerDefaultPort)

};

your config file will look like -

 var env = require('./environment.js');
 exports.config = {
 params: {
    url: "URL",
    testroadname:"Testing123",
    sleeptime:1000

  },
 seleniumAddress: env.seleniumAddress,


  // Capabilities to be passed to the webdriver instance.
  capabilities: {
'browserName': 'chrome'
 },

// Framework to use. Jasmine is recommended.
 framework: 'jasmine',

 // Spec patterns are relative to the current working directly when
 // protractor is called.
 specs: ['mapfeedback.js'],

 // Options to be passed to Jasmine.
 jasmineNodeOpts: {

   defaultTimeoutInterval: 30000
 }


回答2:

To setup selenium-grid remotely for Protractor :-

  1. start hub with command :-

java -jar selenium-server-standalone-3.3.1.jar -role hub -port 4444

  1. Now start your remote node with command where you want execute remote test cases :-

java -jar selenium-server-standalone-3.3.1.jar -role webdriver -hub http://HubDomain-IP:4444/grid/register -port 5556 -browser browserName=internet explorer,maxInstances=1,platform=WINDOWS,applicationName=remoteNode -Dwebdriver.ie.driver=path to IEDriverServer.exe

Once your selenium-grid setup is done and node get connected with Hub, then take config file with configuratiion set as this conf.js file:-

    exports.config = {

  //The address of your running selenium Hub server.
  seleniumAddress: 'http://HubDomain-IP:4444/wd/hub',

  //Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'internet explorer',

    // add node-name as applicationName where you have started node and wanted to remotely execute test cases 
    'applicationName': 'remoteNode'
  },

  //Specify the name of the specs files.
  specs: ['grid_spec.js'],

  //Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
      onComplete: null,
      isVerbose: false,
      showColors: true,
      includeStackTrace: true
  }
};

With above mentioned configuration and setup commands you could run selenium-grid setup for Protractor.Thanks !