Unable to open Firefox browser with given URL - Selenium Webdriver & Java - java

I have written the following selenium script which opens Gmail website.
import org.openqa.selenium.WebDriver; <br>
import org.openqa.selenium.firefox.*;
public class OpenGmail {
/**
* #param args
*/
public void OpenGmailApp()
{
WebDriver webdriver = new FirefoxDriver();
webdriver.get("gmail URL");
}
public static void main(String[] args) {
OpenGmail ob = new OpenGmail();
ob.OpenGmailApp();
}
}
When I execute the above script, I'm getting Firefox home page only. Its not gmail login page. Kindly guide what could be the error I made in that script.

If your jar files are old and the browser was updated to latest version, then download the latest jar files from selenium website -
Selenium Download
You can also use the Selenium FF addon..
FF Selenium Addon
All the steps can be recorded in the addon and the script can be exported.

I have faced the same problem. Now issue is fixed. download the latest selenium jar and replace the external jar of project in eclipse. Check the selenium jars. Selenium supports Firefox so it directly initiate the instance of Firefox WebDriver, but due to selenium jars compatibility url id not opening.
http://www.seleniumhq.org/download/

This is due to the unsigned .xpi (selenium 2.45.0) not being loaded by firefox 43. It's a temporary fix. Selenium will be going to update their jar soon after this you will not need to use this profiling
Full Code:-
public void OpenGmailApp()
{
WebDriver driver = null;
final FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("xpinstall.signatures.required", false);
driver = new FirefoxDriver(firefoxProfile);
driver.get("https://www.google.co.in/");
}
public static void main(String[] args) {
OpenGmail ob = new OpenGmail();
ob.OpenGmailApp();
}
Another thing which can cause issue is either old selenium jars or old browser version. So update both of them.
Download latest jars from below URL:-
http://www.seleniumhq.org/download/
Hope it will help you :)

If you are running via Jenkins/Command prompt then along with updating your selenium jars, delete the older version of that particular jars in your library folder. Keeping both versions might create issue while running via Jenkins/Command prompt

Related

Can I run my selenium WebDriver code in another computer's chorme browser?

I created a java selenium project using maven on computer A and I am able to run tests there successfully.
What I want to do is to run it successfully also on computer B.
This is my code:
private static String currentDirectory = System.getProperty("user.dir");
public static final WebDriver getDriver(Browsers type){
return driverMap.get(type).get();
}
private static final Supplier<WebDriver> chromeDriverSupplier = () -> {
System.setProperty("webdriver.chrome.driver", currentDirectory + File.separator + "chromedriver.exe");
return new ChromeDriver();
Is there a reason why I am not able to run it on computer B?
Is computer B must have "chromedriver.exe" installed in the project directory or can I achieve it without downloading "chromedriver.exe"?
Thanks
You need to have chromedriver.exe in computer B as well.
I used WebdriverManager as suggested in the link provided and it solved the issue
Yes this is possible using selenium grid. Selenium Grid allows you to start a hub and node, then by using a remote webdriver to connect to these other machines to run tests.
Here is the URL for the documentation
This will also allow you to achieve parallel execution of test cases.
Once you have this set up you will set your remote driver with the following code:
WebDriver driver = new RemoteDriver(new URL(nodeAddress, capabilities);
Below is also the link to remote driver maven dependency:
maven dependency

Unable to open Firefox browser with given URL using Java on eclipse

I am new in Automation testing.
Had created a simple program to Open URL in Firefox browser. Browser is getting opened without URL.
Someone please help.
package sanitytest;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Adminlogin {
public static void main(String[]args){
WebDriver driver = new FirefoxDriver();
driver.get("http://www.gcrit.com/build3/admin/login.php");
}
}
I am using Firefox version :- 47.0.1
eclipse mars version :- 4.5.0
Selenium webdriver version :- 2.51
For Mozila Firefox till version 46.x it was the legacy browser and we didn't need gecko driver. Mozila Firefox from version 47.x onwards comes with Marionette, which is an automation driver for Mozilla's Gecko engine. It can remotely control either the UI or the internal JavaScript of a Gecko platform, such as Firefox. Can be donwloaded here: https://github.com/mozilla/geckodriver/releases and needs selenium 3.x.
So, either downgrade FF to version 46.x, or use latest selenium binding with geckodriver + latest FF
Unfortunately Selenium WebDriver 2.51.0 is not compatible with Firefox 47.0. The WebDriver component which handles Firefox browsers (FirefoxDriver) will be discontinued.
Try using firefox 46.0.1. It best matches with Selenium 2.51
https://ftp.mozilla.org/pub/firefox/releases/
try the following code its working
package automation ;
import java.util.concurrent.TimeUnit
enter code here
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class test {
public static void main(String[] args) throws InterruptedException {
//Object webdriver;
System.setProperty("webdriver.gecko.driver",
"C:\\Users\\user\\Downloads\\geckodriver-v0.17.0-win64/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
driver.get("https://www.easybooking.lk");
String i = driver.getCurrentUrl();
System.out.println(i);
//driver.close();
}
}
if its not working http://www.seleniumhq.org/download/ here download java 3.4.0
then in eclipse, right click your project-->properties-->java build path--> liberies-->add external JARS..
enter image description here

Cannot install the geckodriver.exe

I want to fill web form in bot way. I added the libraryclient-combined 3.0.0 beta 3 to the document .My firefox version should be most updated .
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Selenium {
/**
* #param args the command line arguments
*/
public static void main(String[] args) {
WebDriver driver=new FirefoxDriver();
driver.get("https://mail.google.com");
driver.findElement(By.id("Email")).sendKeys("yourEmailId");
driver.findElement(By.id("Passwd")).sendKeys("yourPassword");
driver.findElement(By.id("signIn")).click();
}
}
However , error comes out .
In my understanding , the seleniums 3.0 jar version should be along with geckodriver . Then ,i try to install geckodriver v10.0 here.
https://github.com/mozilla/geckodriver/releases
When I execute the geckodriver-v0.10.0-win64.zip , the installer can't be installed -only black window comes out .
What's wrong ?
REMARK: x64 window 10 version
you can use marionette driver which i recently used. You need to download and rename it to wires.exe. you can download from the following link
https://github.com/mozilla/geckodriver/releases
You need to add selenium-2.53.0 jar files.
below is the code you need to write.
System.setProperty("webdriver.gecko.driver", "G:\\ravik\\Ravi-Training\\Selenium\\Marionette for firefox\\wires.exe");
WebDriver driver = new MarionetteDriver();
driver.get("https://www.google.co.in/webhp?hl=en&sa=X&ved=0ahUKEwjdgc21jJHOAhVCvY8KHZ4aCdcQPAgD");
System.out.println("marionette working fine....");
To all those that are still confused:
What's wrong ?
Well, nothing is wrong, you just need to understand that geckodriver.exe is the driver itself, not an installer that will eventually install the driver on your machine.
So there are two steps you need to do in order to use (or let's say install) the driver:
Unzip the folder on your machine (which you already did) and
Add the driver executable path to test properties (the thing that Ravi pointed out)
Additional note: I use Intellij IDEA to run my tests, so I simply edit the test run configuration and add this line:
-Dwebdriver.gecko.driver="Path\to\my\geckodriver.exe"

Chrome browser is not opening in selenium webdriver

My code is not launching browser.
Project show running for a long time, but nothing happens. I pushed print and observed that WebDriver driver = new ChromeDriver(); is not getting executed.
package seleniumautomation;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class seleniumautomation {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","D:/selenium_java/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.zaakpay.com/");
}
}
After some debugging, I am getting this new error:
I added manifest_vesion, but in every run, it is generating a new file and i am again getting same error.
Download jar from: http://chromedriver.storage.googleapis.com/index.html?path=2.23/
System.setProperty("webdriver.chrome.driver",
"<Downloaded file location>");
WebDriver driver = new ChromeDriver();
driver.get("https://www.zaakpay.com/");
Then, it will work.
To use Chrome Browser needs to System.setPropert("webdriver.chrome.driver","PATH")
The ChromeDriver is maintained / supported by the Chromium project iteslf. WebDriver works with Chrome through the chromedriver binary.
Download Link of ChromeDriver : LINK
You need to add chromedriver.exe(can be downloaded from http://www.seleniumhq.org/download/) to your project. Along with it, you need to add following lines in your code:
System.setProperty("webdriver.chrome.driver", PATH_TO_EXE_FINAL);
capabilities= DesiredCapabilities.chrome();
capabilities.setBrowserName(DesiredCapabilities.chrome().getBrowserName());
Use following code snippet to launch chrome driver.
System.setProperty("webdriver.chrome.driver", PATH_TO_EXE_FINAL);
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-extensions");
opt.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(opt);
I solved the issue by changing my OS windows 10 language to english. selenium methods can not execute some other languages. If in both IE, geckodriver and chrome you are having the same issue it is language problem I can asuure you
enter image description hereTrying to check the version you installed in web driver and the version you currently use in you chrome

Selenium 2.53 not working on Firefox 47

I am getting error while using Firefox with WebDriver.
org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
Firefox version:47.0
Selenium:2.53.0
Windows 10 64 bit
Is anyone getting a similar issue or any idea what is the solution for this? It's working fine with Chrome but with Firefox none of the URLs are getting loaded.
Unfortunately Selenium WebDriver 2.53.0 is not compatible with Firefox 47.0. The WebDriver component which handles Firefox browsers (FirefoxDriver) will be discontinued. As of version 3.0, Selenium WebDriver will need the geckodriver binary to manage Firefox browsers. More info here and here.
Therefore, in order to use Firefox 47.0 as browser with Selenium WebDriver 2.53.0, you need to download the Firefox driver (which is a binary file called geckodriver as of version 0.8.0, and formerly wires) and export its absolute path to the variable webdriver.gecko.driver as a system property in your Java code:
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
Luckily, the library WebDriverManager can do this work for you, i.e. download the proper Marionette binary for your machine (Linux, Mac, or Windows) and export the value of the proper system property. To use this library, you need to include this dependency into your project:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.1.0</version>
</dependency>
... and then execute this line in your program before using WebDriver:
WebDriverManager.firefoxdriver().setup();
A complete running example of a JUnit 4 test case using WebDriver could be as follows:
public class FirefoxTest {
protected WebDriver driver;
#BeforeClass
public static void setupClass() {
WebDriverManager.firefoxdriver().setup();
}
#Before
public void setupTest() {
driver = new FirefoxDriver();
}
#After
public void teardown() {
if (driver != null) {
driver.quit();
}
}
#Test
public void test() {
// Your test code here
}
}
Take into account that Marionette will be the only option for future (for WebDriver 3+ and Firefox 48+), but currently (version 0.9.0 at writing time) is not very stable. Take a look to the Marionette roadmap for further details.
UPDATE
Selenium WebDriver 2.53.1 has been released on 30th June 2016. FirefoxDriver is working again with Firefox 47.0.1 as browser.
Try using firefox 46.0.1. It best matches with Selenium 2.53
https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
I had the same issue and found out that you need to switch drivers because support was dropped. Instead of using the Firefox Driver, you need to use the Marionette Driver in order to run your tests. I am currently working through the setup myself and can post some suggested steps if you'd like when I have a working example.
Here are the steps I followed to get this working on my Java environment on Mac (worked for me in my Linux installations (Fedora, CentOS and Ubuntu) as well):
Download the nightly executable from the releases page
Unpack the archive
Create a directory for Marionette (i.e., mkdir -p /opt/marionette)
Move the unpacked executable file to the directory you made
Update your $PATH to include the executable (also, edit your .bash_profile if you want)
:bangbang: Make sure you chmod +x /opt/marionette/wires-x.x.x so that it is executable
In your launch, make sure you use the following code below (it is what I used on Mac)
Quick Note
Still not working as expected, but at least gets the browser launched now. Need to figure out why - right now it looks like I need to rewrite my tests to get it to work.
Java Snippet
WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
If you're on OSX using Homebrew, you can install old Firefox versions via brew cask:
brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want
After installing, you'll just need to rename your FF executable in the Applications directory to "Firefox".
More info can be found at the git repo homebrew-firefox. Props to smclernon for creating the original cask.
If you're on a Mac do brew install geckodriver and off you go!
In case anyone is wondering how to use Marionette in C#.
FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = #"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
service,
option,
TimeSpan.FromSeconds(30));
Overriding FirefoxOptions to provide the function to add additional capability and set Firefox profile because selenium v53 doesn't provide that function yet.
public class FirefoxProfileOptions : FirefoxOptions
{
private DesiredCapabilities _capabilities;
public FirefoxProfileOptions()
: base()
{
_capabilities = DesiredCapabilities.Firefox();
_capabilities.SetCapability("marionette", this.IsMarionette);
}
public FirefoxProfileOptions(FirefoxProfile profile)
: this()
{
_capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
}
public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
{
_capabilities.SetCapability(capabilityName, capabilityValue);
}
public override ICapabilities ToCapabilities()
{
return _capabilities;
}
}
Note: Launching with profile doesn't work with FF 47, it works with FF 50 Nightly.
However, we tried to convert our test to use Marionette, and it's just not viable at the moment because the implementation of the driver is either not completed or buggy. I'd suggest people downgrade their Firefox at this moment.
New Selenium libraries are now out, according to: https://github.com/SeleniumHQ/selenium/issues/2110
The download page http://www.seleniumhq.org/download/ seems not to be updated just yet, but by adding 1 to the minor version in the link, I could download the C# version: http://selenium-release.storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip
It works for me with Firefox 47.0.1.
As a side note, I was able build just the webdriver.xpi Firefox extension from the master branch in GitHub, by running ./go //javascript/firefox-driver:webdriver:run – which gave an error message but did build the build/javascript/firefox-driver/webdriver.xpi file, which I could rename (to avoid a name clash) and successfully load with the FirefoxProfile.AddExtension method. That was a reasonable workaround without having to rebuild the entire Selenium library.
Its a FF47 issue
https://github.com/SeleniumHQ/selenium/issues/2110
Please downgrade to FF 46 or below (or try out FF48 developer https://developer.mozilla.org/en-US/Firefox/Releases/48)
Instructions on how to downgrade:
https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/
Or if you are on Mac, as suggested by someone else in this thread use brew.
Firefox 47.0 stopped working with Webdriver.
Easiest solution is to switch to Firefox 47.0.1 and Webdriver 2.53.1. This combination again works. In fact, restoring Webdriver compatibility was the main reason behind the 47.0.1 release, according to https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/.
You can try using this code,
private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");
driver = new FirefoxDriver();
I upgraded to selenium 3.0.0 and Firefox version is 49.0.1
You can download geckodriver.exe from https://github.com/mozilla/geckodriver/releases
Make sure you download zip file only, geckodriver-v0.11.1-win64.zip file or win32 one as per your system and extract it in a folder.
Put the path for that folder in the "Your path to driver" quotes.Don't forget to put geckodriver.exe in the path.
I eventually installed an additional old version of Firefox (used for testing only) to resolve this, besides my regular (secure, up to date) latest Firefox installation.
This requires webdriver to know where it can find the Firefox binary, which can be set through the webdriver.firefox.bin property.
What worked for me (mac, maven, /tmp/ff46 as installation folder) is:
mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify
To install an old version of Firefox in a dedicated folder, create the folder, open Finder in that folder, download the Firefox dmg, and drag it to that Finder.
Here's what the problem looked like in Wireshark
Just load up 2.53.1 and every thing will work.
As of September 2016
Firefox 48.0 and selenium==2.53.6 work fine without any errors
To upgrade firefox on Ubuntu 14.04 only
sudo apt-get update
sudo apt-get upgrade firefox
It seems to me that the best solution is to update to Selenium 3.0.0, download geckodriver.exe and use Firefox 47 or higher.
I changed Firefox initialization to:
string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe");
string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
File.Copy(geckoPathTest, geckoPath);
Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
_firefoxDriver = new FirefoxDriver();
I can confirm that selenium 2.53.6 works with firefox 44 for me on ubuntu 15.

Categories