Facing issue in running chrome browser on Selenium Grid - selenium-webdriver

I am able to run my test cases on firefox browser on Selenium Grid, but I am having issues while running the tests on Chrome Browser, its kind of configuration issue it seems.
I am getting below error while running the tests:-
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Linux 3.13.0-63-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 504 milliseconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
I am running my node with following command:-
export PATH=$PATH:/root/ChromeDriver
java -jar selenium-server-standalone-2.48.2.jar -port $1 -role node -hub http://localhost:4444/grid/register -timeout 1800000 -nodeConfig nodeconfig.json -Dwebdriver.chrome.driver="/root/ChromeDriver/chromedriver"
below is my nodeconfig.json
{
"capabilities":
[
{
"browserName": "firefox",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
],
"configuration":
{
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": 127.0.0.1
}
}
I've added the binary path also using command:-
-Dwebdriver.chrome.driver="/root/ChromeDriver/chromedriver"
Can somebody suggest what am I doing wrong?

The error is not saying that it cannot find the "chromedriver" binary.
The error is telling you that Selenium could not find the location where Chrome browser itself was installed. Please check the PATH of chrome browser.

Related

Protractor acting randomly or occasionally not starting

I've been tasked with writing different suites of tests and tasks automation but Protractor has been acting in a very strange way the past couple days and... I just don't recall having changed anything from the last time my suites ran correctly.
Currently using the latest drivers:
% ./node_modules/webdriver-manager/bin/webdriver-manager status
webdriver-manager: using local installed version 12.1.0
[09:14:25] I/status - selenium standalone version available: 3.13.0 [last]
[09:14:25] I/status - chromedriver version available: 2.40 [last]
[09:14:25] I/status - geckodriver version available: v0.21.0 [last]
[09:14:25] I/status - android-sdk is not present
[09:14:25] I/status - appium is not present
And what appears to be the latest Protractor version:
% ./node_modules/protractor/bin/protractor --version
Version 5.3.2
This is what Protractor's output looks like 80% of the time, when it doesn't run:
% ./node_modules/protractor/bin/protractor ./conf.js --suite scenarios --params.login.usr=$USR_E2E --params.login.pwd=$PWD_E2E --params.env=test
(node:1709) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[09:03:07] W/driverProviders - Using driver provider hosted, but also found extra driver provider parameter(s): seleniumServerJar
[09:03:07] I/launcher - Running 1 instances of WebDriver
[09:03:07] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[09:03:08] E/launcher - Error: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"[type="email"]"}
(Session info: headless chrome=67.0.3396.99)
(Driver info: chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),platform=Mac OS X 10.14.0 x86_64)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
[09:03:08] E/launcher - Process exited with error code 100
The corresponding webdriver-manager's output:
% ./node_modules/webdriver-manager/bin/webdriver-manager start
webdriver-manager: using local installed version 12.1.0
[09:30:49] I/start - java -Dwebdriver.chrome.driver=/Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/chromedriver_2.40 -Dwebdriver.gecko.driver=/Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/geckodriver-v0.21.0 -jar /Users/cyril/Projects/parkopoly_e2e/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.13.0.jar -port 4444
[09:30:49] I/start - seleniumProcess.pid: 1791
09:30:49.534 INFO [GridLauncherV3.launch] - Selenium build info: version: '3.13.0', revision: '2f0d292'
09:30:49.535 INFO [GridLauncherV3$1.launch] - Launching a standalone Selenium Server on port 4444
2018-07-16 09:30:49.613:INFO::main: Logging initialized #282ms to org.seleniumhq.jetty9.util.log.StdErrLog
09:30:49.752 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
09:30:55.414 INFO [ActiveSessionFactory.apply] - Capabilities are: {
"browserName": "chrome",
"chromeOptions": {
"args": [
"--disable-extensions",
"--show-fps-counter=true",
"--disable-infobars",
"--incognito",
"--disable-gpu",
"--headless"
]
},
"count": 1
}
09:30:55.415 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
Starting ChromeDriver 2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363) on port 24866
Only local connections are allowed.
09:30:55.951 INFO [ProtocolHandshake.createSession] - Detected dialect: OSS
09:30:56.171 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 9ea12201cba04ac9e41639501f0c02e1 (org.openqa.selenium.chrome.ChromeDriverService)
09:30:56.925 INFO [ActiveSessions$1.onStop] - Removing session 9ea12201cba04ac9e41639501f0c02e1 (org.openqa.selenium.chrome.ChromeDriverService)
Here's the conf.js file I'm currently using:
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
exports.config = {
SELENIUM_PROMISE_MANAGER: false,
rootElement: 'html',
seleniumServerJar: './bin/selenium-server-standalone-3.12.0.jar',
seleniumPort: '4444',
seleniumAddress: 'http://localhost:4444/wd/hub',
framework: 'jasmine2',
directConnect: false,
specs: ['./e2e/**/*.spec.js'],
suites: {
cft: './e2e/cft/**/*.spec.js',
scenarios: './e2e/scenarios/**/*.scenario.js'
},
jasmineNodeOpts: {
isVerbose: true,
defaultTimeoutInterval: 15000,
print: function() {}
},
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--disable-extensions', '--show-fps-counter=true', '--disable-infobars', '--incognito', '--disable-gpu', '--headless']
}
},
onPrepare: async function() {
browser.params.ts = Date.now();
if (browser.params.env === undefined)
browser.params.env = 'test';
await jasmine.getEnv().addReporter(new SpecReporter({
spec: {
displayStackTrace: true,
displaySuccessful: true,
displayFailed: true,
displayPending: true,
displaySpecDuration: true,
displaySuiteNumber: true
},
summary: {
displayFailures: true,
displayPending: false
},
colors: {
enabled: true,
successful: 'green',
failed: 'red',
pending: 'yellow'
}
}));
await browser.get('https://dashboard-' + browser.params.env + '.website.com');
await browser.driver.findElement(by.css('[type="email"]')).sendKeys(browser.params.login.usr);
await browser.driver.findElement(by.css('[type="password"]')).sendKeys(browser.params.login.pwd);
await browser.driver.findElement(by.css('[type="submit"]')).click();
return await browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /calendar_bo/.test(url);
});
}, 10000);
}
};
Sometimes, whenever Protractor starts and launch the tests, it just suffers from race conditions.
I couldn't find any thread, post, comment or anyone that ever had such outputs. I'm running out of ideas and I'd appreciate any ideas or potential solutions. Thanks!
Have not enough reputation to comment..
Could it be that you have a seleniumServerJar AND a seleniumAddress configured at the same time? Documentation specifies to use only 1.
Protractor needs to know how to connect to Drivers for the browsers it
is testing on. This is usually done through a Selenium Server.
There are five options - specify one of the following:
seleniumServerJar - to start a standalone Selenium Server locally.
seleniumAddress - to connect to a Selenium Server which is already running.
sauceUser/sauceKey - to use remote Selenium Servers via Sauce Labs.
browserstackUser/browserstackKey - to use remote Selenium Servers via BrowserStack.
directConnect - to connect directly to the browser Drivers. This option is only available for Firefox and Chrome.
can you try this code before email send keys:
var EC = protractor.ExpectedConditions;
var email_element = element(by.css('[type="email"]'));
browser.wait(EC.visibilityOf(email_element), 10000);

Protractor, internet explorer stops at "initial start page for the WebDriver server."

I have successfully created and executed test suites in Protractor for Chrome and Firefox. However I am unable to run tests with Internet Explorer. It stops at "initial start page for the WebDriver server" and displays this error in the powershell:
[11:02:10] I/launcher - Running 1 instances of WebDriver
[11:02:10] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[11:02:46] E/launcher -
[11:02:46] E/launcher - WebDriverError
at WebDriverError (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:5)
at parseHttpResponse (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:521:11)
at doSend.then.response (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:440:13)
at process._tickCallback (internal/process/next_tick.js:109:7)
From: Task: WebDriver.createSession()
at Function.createSession (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:777:24)
at createDriver (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:167:33)
at Builder.build (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:632:14)
at Hosted.getNewDriver (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\driverProvider.ts:60:29)
at Runner.createBrowser (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\lib\runner.ts:225:39)
at q.then.then (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\lib\runner.ts:391:27)
at _fulfilled (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:834:54)
at self.promiseDispatch.done (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:863:30)
at Promise.promise.promiseDispatch (C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:796:13)
at C:\Users\user\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:556:49
[11:02:46] E/launcher - Process exited with error code 199
This is my protractor config:
// Protractor configuration file
exports.config = {
seleniumAddress: "http://localhost:4444/wd/hub",
multiCapabilities: [
//{ browserName: "chrome" },
{
browserName: 'internet explorer',
}
//{ browserName: "firefox" }
],
framework: "jasmine2",
jasmineNodeOpts: {
defaultTimeoutInterval: 2500000,
showColors: true, // Use colors in the command line report.
isVerbose: true,
includeStackTrace: true
},
specs: [
"specs/login-spec.js",
],
resultJsonOutputFile: "./Report.json",
};
I read tens of posts on StackOverflow but didn't find any solusion to my problem. I have tried to change IE settings but they always go back to its defaults due to corporation setup.
The error stacktrace doesn't give my much information on what's wrong actually. I'm not very familiar with WebDriver source.
Any suggestions? Did anyone face similar problem?

Headless chrome: chrome not reachable

I am using Chrome headless to run the protractor test. It runs for a while but after that i get the following error.
[15:36:30] E/launcher - chrome not reachable (Session info:
headless chrome=59.0.3071.115) (Driver info:
chromedriver=2.30.477690
(c53f4ad87510ee97b5c3425a14c0e79780cdf262),platform=Mac OS X 10.11.6
x86_64) (WARNING: The server did not provide any stacktrace
information) Command duration or timeout: 5 milliseconds Build info:
version: '3.4.0', revision: 'unknown', time: 'unknown'
The configuration is as shown below.
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['headless', 'disable-gpu']
}
Tests run fine when i run without the 'headless' args.
Update capabilities as it shows in the official manual:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ "--headless", "--disable-gpu"]
}
}
You could take a look at Using headless Chrome section

Selenium 3.0 does not run on firefox on the grid

When I run my scripts using Selenium 3.0 on the grid, only firefox instances open and nothing happens.
My setup is like this:
Selenium - 3.0.0
Selenium Grid - hub and node started using Selenium 3.0.0 and with below options:
hub -
java -jar selenium-server-standalone.jar -role hub -timeout 300000
node -
java -Dwebdriver.gecko.driver=C:\Grid2\geckodriver-v0.11.1-win64\geckodriver.exe -jar selenium-server-standalone.jar -role node -hub http://localhost:4444/grid/register -port 5556 -nodeConfig se2config.txt
se2config.txt contents -
{
"capabilities":
[
{
"browserName": "firefox",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "internet explorer",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 1,
"port": 5556,
"register": true,
"registerCycle": 5000,
"hub": "http://localhost:4444",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {}
}
Firefox version - 47.0.2
Added geckodriver.exe path to PATH variable and also in the code using:
System.setProperty("webdriver.gecko.driver","<path>")
The scripts run fine locally, but when run on the grid, it just launches the firefox browser and does not do anything.
Following are the node logs:
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:128)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:259)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:247)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:242)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:135)
... 14 more
02:22:31.173 WARN - Exception: Unable to create new remote session. desired capabilities = Capabilities [{marionette=true, firefoxOptions=org.openqa.selenium.firefox.FirefoxOptions#268c4f21, browserName=firefox, moz:firefoxOptions=org.openqa.selenium.firefox.FirefoxOptions#268c4f21, version=, platform=ANY, firefox_profile=UEsDBBQACAgIAIx2eUkAAAAAAAAAA...}], required capabilities = Capabilities [{}]
Build info: version: '3.0.0', revision: '350cf60', time: '2016-10-13 10:48:16 -0700'
The scr
I run the scripts from my local system and it gets executed on the grid node.
1.So what other changes or additions do I make to run tests on the grid.
2.Also, if I were to run my tests using jenkins, so since the code will be built on the jenkins node, how can I set the -Dwebdriver path for node, does it have to be the path of geckodriver on the jenkins slave or of that of the grid node.

selenium-server-standalone-3.0.1 Can not find firefox binary in path

I am just upgrading to selenium-server-standalone-3.0.1 on our Selenium Grid hub and on the nodes.
What I realised is, that the JSON config has slightly changed (https://github.com/SeleniumHQ/selenium/wiki/Grid2).
After changing my configuration accordingly the node is starting fine. However I can not run any tests on firefox because I get the following error:
Exception: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700'
System info: host: 'ebc-vie-selenium-node-01', ip: '10.100.0.157', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_71'
Driver info: driver.version: FirefoxDriver
The JSON configuration looks like this:
"capabilities":
[
{
"browserName": "firefox",
"version": "49.0.2",
"platform": "WINDOWS",
"firefox_binary": "C:\\Program Files (x86)\\Mozilla Firefox\\ESR\\Firefox_49.0.2\\firefox.exe",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
When I set the firefox_binary directly from Java code it works fine (with Gecko Driver)
desiredCapabilities.setCapability("firefox_binary", "C:\\\\Program Files (x86)\\\\Mozilla Firefox\\\\ESR\\\\Firefox_49.0.2\\\\firefox.exe");
Any idea why that is happening respectively how the JSON configuration has changed for version 3.0.1

Resources