Automation test chromium edge - selenium-webdriver

I try to run selenium test with chromium edge version 79.0.309.56.
This is the code for the test but I got an error
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: unrecognized Chrome version: Edg/79.0.309.56
the code is:
System.setProperty("webdriver.edge.driver", "<path to driver>\\msedgedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("<path to browser>\\msedge.exe");
DesiredCapabilities m_capability = DesiredCapabilities.edge();
m_capability.merge(chromeOptions);
EdgeOptions edgeOptions = new EdgeOptions().merge(chromeOptions);
try{
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://<ip>:80/wd/hub"), m_capability);
driver.get("http://www.google.com");
} catch (MalformedURLException e) {
e.printStackTrace();
}
I didn't find a solution for this error.
Thanks

What version of selenium server and Microsoft Edge (Chromium) driver are you using? I use selenium-server-standalone-3.141.59.jar and Microsoft Edge (Chromium) driver 79.0.309.43 and the code can work well when automating Microsoft Edge (Chromium) 79.0.309.56.
How do you launch the hub and the node? You could refer to my steps below:
Launch a hub: using the command prompt, navigate to the path of selenium server, then type on the command prompt:
java -jar selenium-server-standalone-3.141.59.jar -role hub -maxSession 10 -port 4444
Launch a node: navigating to the same path and type on the command prompt:
java -Dwebdriver.chrome.driver="your\path\to\webdriver\msedgedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://<your_ip>:4444/grid/register -port 3333
After launching successfully, run the code you providing and the Capabilities will show on the command prompt like this:
INFO [ActiveSessionFactory.apply] - Capabilities are: {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [
],
"binary": "C:\\Program Files (x86)\\Microsoft\\Edge Beta\\Application\\msedge.exe",
"extensions": [
]
},
"platform": "WINDOWS",
"version": ""
}
Reference: Selenium Grid Tutorial: Hub & Node (with Example)

Related

Selenium Server ChromeDriver only supports Chrome version 80

I have Selenium Server 3.141.59 installed. I run it as a node via command
java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.137.1:4444/grid/register/
Test code in Java creates WebDriver this way
System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); // Path to version 88
this.driver = new RemoteWebDriver("http://127.0.0.1:4444/wd/hub");
Test ends up with error: SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 80
How can I force Selenium Server to use project local driver?
Current version of Chrome is 88.

Unable to understand WebDriver execption?

I am getting Web-driver exception while running a selenium code for grid.Here is code detail:
Chrome Version : 58.0.3029.110 (64-bit)
Selenium server : 3.4.0
#Test
public void Testgrid() throws MalformedURLException{
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
cap.setPlatform(Platform.ANY);
cap.setCapability("binary", "C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe");
RemoteWebDriver driver = new RemoteWebDriver(newURL("http://localhost:4444/wb/hub"), cap);
driver.get("https://www.simplesite.com/pages/service-login.aspx");
driver.manage().window().maximize();
}
Exception:
org.openqa.selenium.WebDriverException: Unable to parse remote response:
Try with this :
System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
set this property in your code before DesiredCapabilities.
or in node command give this command:
java -Dwebdriver.gecko.driver=E:\chromedriver.exe -jar selenium-server-standalone-3.5.0.jar -role node -hub http://localhost:4444/grid/register -port 4422
this worked for me once. I am not sure of using -Dwebdriver.gecko.driver=E:\chromedriver.exe here , you can edit it to -Dwebdriver.chrome.driver=E:\chromedriver.exe

Mink with Selenium2 : how to connect to selenium server?

i'm trying to configure Behat tests with selenium server.
my behat.yml is:
default:
paths:
features: features
bootstrap: %behat.paths.features%/bootstrap
extensions:
Behat\MinkExtension\Extension:
base_url: 'http://prog.easyhospi.itg.crmsante.com/'
default_session: 'selenium2'
browser_name: 'firefox'
selenium2:
wd_host: 'http://127.0.0.1:5555/wd/hub'
capabilities: { "browser": "firefox", "version": "29"}
i ran selenium server this way:
java -jar selenium-server-standalone-2.41.0.jar -role hub
and then:
java -jar selenium-server-standalone-2.25.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=firefox,version=29,maxInstances=1
I have got the error message "Could not open connection"
What is missing?
Capabilities of at least one node need to match capabilities requested from behat. Last time I used selenium grid, I needed to set the version to an empty string, otherwise selenium could not match the browser version:
# behat.yml
default:
extensions:
Behat\MinkExtension\Extension:
selenium2:
capabilities:
version: ''
Note that you don't need to run grid. In most cases it's sufficient to run selenium as a standalone server (this way no capabilities need to be configured):
java -jar selenium-server-standalone-2.25.0.jar
Ok, sorry for that post, but Curl was missing... didn't see that requirement in the doc.
you are right, selenium grid is not needed, but my behat.yml matches: if i don't specify "default_session: 'selenium2'", i have an error about goutte.
thanks.

Selenium RemoteWebDriver giving UnreachableBrowserException

I am implementing selenium grid and the capability to launch the tests on a remote machine using the RemoteWebDriver.
I am invoking the RemoteWebDriver instance as in:
private static String browserType = "firefox";
public static boolean setup(String browserType) throws Exception,MalformedURLException {
try {
logger.debug("Launching the browsersession");
DesiredCapabilities capability= new DesiredCapabilities();
capability.setBrowserName(browserType);
webdriver1 = new RemoteWebDriver(new URL("http://www.ipaddress.com:4444/wd/hub"), capability);
}
webdriver1.get(http://url of the webserver);
}
I started the selenium-standalone as hub with
java -jar selenium-server-standalone-2.30.0.jar -role hub
and the node as
java -Dwebdriver.chrome.driver=C:/Chrome/chromedri
ver.exe -jar selenium-server-standalone-2.30.0.jar -role webdriver -hub http://www.ipaddress.com:4444/grid/register -port 5555 -browser browserName=chrome
Hub was giving an error: INFO: I/O exception (java.net.SocketException) caught when connecting to the tar
get host: Permission denied: connect
When I run the tests from Eclipse, there is an exception:
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Has anyone encountered this error? Appreciate any suggestions
Just setting browsername doesn't suffice. You need to set the browser that you need to use. for eg.
DesiredCapabilities capability = DesiredCapabilities.firefox();
Browsername would just help shortlist the node the test should go to.
Please refer here to get started.

Selenium Grid 2 set up on Windows

I am setting up Selenium Grid 2 (selenium-server-standalone-2.1.0) on Windows 7 (I have also tried Windows Server 2008) both 64 bit. I test the WebDriver locally and all is well.
I launch the hub with:
java -jar selenium-server-standalone-2.1.0.jar -role hub
Adding a webDriver node for FireFox works, but anything else such as Google Chrome throws an IllegalOperation Exception.
For example:
I try adding a node for Chrome:
java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome platform=windows version=12 -port 5556
This shows as a node on the hub when you go to http://localhost:4444/grid/console
I add code to call the webDriver such as:
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability(CapabilityType.Platform, "windows");
capability.SetCapability(CapabilityType.Version, "12");
capability.SetCapability(CapabilityType.BrowserName, "chrome");
IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"), capability);
I get an exception almost immediately:
{"cannot find : {platform=windows, browserName=chrome, version=12}"}
It seems as if the node isn't even being found. I am new to this is it something I have missed in the set up? (internet explorer does the same and changing versions doesn't seem to help).
I have searched for hours and hours but nothing that matches the exception seems as generic as my problem.
The IllegalOperation Exception {"cannot find : {platform=windows, browserName... is caused by there being no matching capability (it never gets as far as a Node).
If I use a config file when I launch the node that explicitly states the platform and browser such as:
{
"capabilities":
[
{
"browserName":"firefox",
"maxInstances":1
},
{
"browserName":"chrome",
"platform":"WINDOWS",
"maxInstances":1
},
{
"browserName":"internet explorer",
"version":"9",
"platform":"WINDOWS",
"maxInstances":1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy":"org.openqa.grid.selenium.proxy.WebDriverRemoteProxy",
"maxSession":5,
"url":"http://[myIP]/wd/hub",
}
}
and launch the hub with this line:
java -jar selenium-server-standalone-2.2.0.jar -role webdriver -nodeConfig myconfig.json -hub http://[myIP]:4444/grid/register
and create the capabilities like so:
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability(CapabilityType.Platform, "WINDOWS");
capability.SetCapability(CapabilityType.BrowserName, "internet explorer");
Then the test works (you have to set all Zones in IE to protected by the way).
N.B. I did notice that windows is UPPERCASE as in WINDOWS or you get an error.
The docs do actually document this but in an unclear way.
java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome platform=windows version=12 -port 5556
Needs to be:
java -Dwebdriver.chrome.driver="C:\Users\Mike\Documents\Java Libraries\Selenium\chromedriver\chromedriver.exe" -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444/grid/register -browser "browserName=chrome,platform=WINDOWS,version=12" -port 5556
You are missing grid/register from the hub URL. On top of this, if you are passing multiple arguments to -browser they need to be enclosed in quotes and separated by commas without spaces. You also need to pass in the webdriver.chrome.driver property in a similar way to how I did it.
You can check that it has successfully registered by going to your browser and hitting:
http://localhost:4444/grid/console
And as a sidenote, this is another way you could declare the desired capabilities:
DesiredCapabilities dc = DesiredCapabilities.chrome();
dc.setVersion("12");
dc.setPlatform(Platform.WINDOWS);
Lets consider Hub running on Machine-A whose IPAddress is = 192.168.10.10 default port no. 4444.
Lets Node running on Machine-B whose IPAddress is = 192.168.10.20.
Lets consider operating System on HUB and Node is installed on drive C:\ (C-Drive).
create a folder named selenium on c:\ as c:\selenium.
keep binaries of IExplorer.exe, chromeDriver.exe and Selenium-Standalone-server2.10.0.jar. (on both machine A and B).
configuring HUB on Machine-A
1- open Command prompt
2- go to folder selenium using
i type cd\ then enter
ii type c: then enter
iii c:> cd selenium then enter
3- java -jar selenium-server-standalone-2.20.0.jar -role hub
Configuring NOde on Machine - B
1- open Command prompt
2- go to folder selenium using
i type cd\ then enter
ii type c: then enter
iii c:> cd selenium then enter
3- java -jar selenium-server-standalone-2.20.0.jar -role node -hub http://192.168.10.10:4444/grid/register -port 5560 -browser browserName=chrome,maxInstance=4,platform=WIN8_1 -Dwebdriver.ie.driver=c:\selenium\ChromeDriver.exe
your node will get register with Hub on port 5560.
Test Case will become as-
package testCase;
import static org.junit.Assert.*;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class Avinash_Google_Chrome
{
WebDriver driver;
String baseUrl , nodeUrl;
#Before
public void setUp() throws Exception
{
nodeUrl = "http://192.168.10.20:5560/wd/hub"; //Machine-A IPAdress
with Port No.
DesiredCapabilities capability = DesiredCapabilities.chrome();
driver = new RemoteWebDriver(new URL(nodeUrl),capability);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
}
#After
public void tearDown() throws Exception
{
driver.quit();
}
#Test
public void test() throws InterruptedException
{
driver.get("https://www.google.co.in");
Thread.sleep(3000);
driver.findElement(By.linkText("Gmail")).click();
Thread.sleep(3000);
driver.findElement(By.id("Email")).sendKeys("aavinashpande#gmail.com");
driver.findElement(By.id("Passwd")).sendKeys("********");
driver.findElement(By.id("signIn")).click();
Thread.sleep(6000);
}
}
Try to lower the conditions about the chrome version and the operating system:
Your code to register the node would be the following
java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome -port 5556
And to create your browser:
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability(CapabilityType.BrowserName, "chrome");
or
DesiredCapabilities capability = DesiredCapabilities.chrome();
It can be that your Chrome updated without you noticing or that the version number "12" is not perfectly fitting to your installed version.
If it runs under these conditions, try to add the "Platform=WINDOWS" and the "Version" CapabilityTypes with new combinations.
You can set
driver.quit();
at the end of your script

Resources