I am using selenium remotedriver(with C#) for chrome and edge. The tests seem to run fine on the chrome browser but not on edge. Edge is launched but fails to navigate to the specified uri.
I tried to make sure, I have the same version of webdriver as the installed version of edge, I am on windows 10 so it is already turned on.
var options = new EdgeOptions();
options.PageLoadStrategy = PageLoadStrategy.Eager;
_driver = new EdgeDriver(driverPath,options);
_driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
_driver.Navigate().GoToUrl("www.google.com");
The image contains the nuget packages added to the project
Microsoft Edge 44.18362.329.0 that is installed. Any help would be deeply appreciated.
I tried to test the issue on my side with Microsoft Edge 44.18362.1.0, Windows 10, Selenium web driver version V3.141.0
Tested code:
class Program
{
private static StringBuilder verificationErrors;
[Obsolete]
static void Main(string[] args)
{
var options = new EdgeOptions();
options.PageLoadStrategy = PageLoadStrategy.Eager;
IWebDriver driver = new EdgeDriver(options);
driver.Navigate().GoToUrl("www.google.com");
}
}
Code is working fine on my side and opening the web page without any issue.
Output:
I can see various entries for Web drivers in your package manager.
I suggest you to just installed the Selenium web driver v3.141.0 in new separate project and try to run this code in it to check whether it helps solve the issue or not.
If it solves the issue than remove unnecessary entries from your project may help to solve your issue.
Related
I am using C#, Microsoft.VisualStudio.TestTools.UnitTesting and Selenium to test a website.
I know MS Edge is no longer being developed, and is being replaced with a Chromium-based product. In the interim, I would still like to be able to tell my customers that Edge is a supported browser until the replacement occurs.
But it looks like using the selenium EdgeDriver requires a valid microsoftwebdriver - and the latest one is not compatible with the latest version of Windows - my machine uses Windows 10 Version 1809 / build 17763.379.
Has anyone been able to get Edge testing to work with Selenium on a Windows 10 build 1809 machine? If so, please show some sample code and needed steps / references / usings / etc.
If seen a few posting about this where some responses say it is impossible, and others say it is possible - but the ones that say it is possible don't show any actual code or reference names.
I apologize to any readers that I didn't post the solution I eventually found - which is quite simple. Here's the code of instantiating the driver:
var service = OpenQA.Selenium.Edge.EdgeDriverService.CreateDefaultService(#"C:\Drivers", #"msedgedriver.exe");
service.UseVerboseLogging = true;
service.UseSpecCompliantProtocol = true;
service.Start();
var options = new OpenQA.Selenium.Edge.EdgeOptions();
// For future reference - please check to see if there are options that should be set...
driver = new RemoteWebDriver(service.ServiceUrl, options);
As you can see, I keep the latest edge driver in a dircetory called "C:\Drivers". The latest driver can always be downloaded from the selenium website downloads page (https://www.selenium.dev/downloads/) - expand the Browsers section on that page.
Sample C# Code
else if (AppSettings.Browser == "Edge")
{
EdgeOptions edgeOptions = new EdgeOptions()
{
UseInPrivateBrowsing = true,
};
driver = new EdgeDriver(edgeOptions);
}
and Remove all Nuget references to MicrosoftDriver, Clean the Solution
Then Run the below command in CMD Admin mode
DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0
Note: This Solution is for Microsoft Edge version 18 or Above
Well after a long time navigating the internet found a solution for that!
At least you have to remove your NuGet package WebDriver(actual version) and install the beta version, then go to this website https://www.nuget.org/packages/Selenium.WebDriver/4.0.0-beta2 copy the beta nuget you want in my case 4.0.0 till the moment, then open your visual studio (mine is 2019) Tools>Nuget Package Manager>Package Manger Console here you paste your copy.
Ps. make download from edge chromium
using OpenQA.Selenium.Edge;
public class Example Edger
{
private IWebDriver driver;
public void SetupTest()
{
driver = new EdgeDriver();
driver.Manage().Window.Maximize();
}
}
You need to install edge driver version equal to the version of edge in your system. To find edge version number go to settings->about microsoft edge .Download the correct version from https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver After downloading you need to change the name of driver to MicrosoftWebDriver.exe from msedgedriver.exe. Then It will work :)
The Selenium is supposed to work with Firefox without any drivers out of the box, however I found that it is not the case with the latest Selenium & Firefox (install just days ago, Selenium 3 & Firefox ERS 52.5).
I'm following "Selenium C# and NUnit Pain Free Start Guide" as a total newbie, but found the simple Selenium C# NUnit test is not working for Firefox.
Here is my C# code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Chrome;
namespace NewSeleniumProject
{
[TestFixture]
public class MyFirstTest
{
IWebDriver driver;
[SetUp]
public void SetupTest()
{
// driver = new ChromeDriver();
driver = new FirefoxDriver();
//driver = new FirefoxDriver(new FirefoxBinary(#"C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"), new FirefoxProfile(), TimeSpan.FromMinutes(10));
//var options = new FirefoxOptions();
//options.BrowserExecutableLocation = #"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
//driver = new FirefoxDriver(options);
}
[Test]
public void myFirstTest()
{
driver.Navigate().GoToUrl("http://www.swtestacademy.com");
Assert.AreEqual("SW Test Academy - Software Test Academy", driver.Title);
driver.Close();
driver.Quit();
}
}
}
And the following are my journeys to get it working.
First of all, the driver = new ChromeDriver() works for me without any hitch.
When I was using 32b Firefox ERS 52 with driver = new FirefoxDriver();, I'm getting the "Unable to determine the current version of FireFox using the registry" error, however none of the answers from Unable to determine the current version of FireFox after updated to 28.0 solves my problem. So I tried the "Try uninstalling Firefox and then re-installing it. That's what I would do" one.
Wit 64b Firefox ERS 52 (and driver = new FirefoxDriver();), I'm getting the "OpenQA.Selenium.WebDriverException : Cannot find Firefox binary in PATH or default install locations. Make sure Firefox is installed." error.
When using the var options = new FirefoxOptions(), for both 32b and 64b Firefox, I'm getting "OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:6985/session timed out after 60 seconds."
Again, the whole setup I'm following is from "Selenium C# and NUnit Pain Free Start Guide". What else I'm missing? Thx.
UPDATE:
This question is not about the error:
OpenQA.Selenium.DriverServiceNotFoundException : The geckodriver.exe file does not exist in the current directory or in a directory on the PATH environment variable.
which I've fixed by downloading the driver from https://github.com/mozilla/geckodriver/releases.
Make sure versions match first. Then try this way of doing for Firefox browser. I faced same challenges before but this way of calling Firefox solved the issue. Hope it might help
var binary = new FirefoxBinary(#"----Firefox.exe Local Path------");
var profile = new FirefoxProfile();
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(#"--GeckoDriver Path-----");
service.FirefoxBinaryPath = #"----Firefox.exe Local Path------";
driverInstance = new FirefoxDriver(service);
So yes, you will need to Dl the driver and place that in your bin folder of your application and pass the path location of the .exe to the driver service using the options() with {}.
I have the same thing, however there is a difference between the two. Firefox is installed in the 64 bit folder and chrome is located in the 32 bit folder (x86) Program Files and i believe this is where there issue lies in the Selenium only looks at the 32 bit folders for the applications .exe.
I ran into the same issue when i started using any other driver apart from edge.
another issue that you may run into with the new gecko driver is that firefox will not open on the requested URL. Note that this was in VB. Should be the same though. I may just run a test.
I need help to upgrade to geckodriver using C#. I downloaded geckodriver from here. Downloaded windows 64bit version as I'm on windows 10 64bit. Copied the driver to my project location.
Environment.SetEnvironmentVariable("webdriver.gecko.driver", #"C:\Git\AutomationTest\Drivers\geckodriver.exe");
FirefoxDriverService driverService = FirefoxDriverService.CreateDefaultService();
driverService.FirefoxBinaryPath = #"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
driverService.HideCommandPromptWindow = true;
driverService.SuppressInitialDiagnosticInformation = true;
driver = new FirefoxDriver(driverService, new FirefoxOptions(), TimeSpan.FromMilliseconds(600));
It threw error:
Initialization method UnitTestProject1.UnitTest1.Init threw exception. OpenQA.Selenium.DriverServiceNotFoundException: OpenQA.Selenium.DriverServiceNotFoundException: The geckodriver.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at https://github.com/mozilla/geckodriver/releases..
Result StackTrace:
at OpenQA.Selenium.DriverService.FindDriverServiceExecutable(String executableName, Uri downloadUrl)
at OpenQA.Selenium.Firefox.FirefoxDriverService.CreateDefaultService()
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxOptions options)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor()
at UnitTestProject1.UnitTest1.Init()
Tried renaming it to 'Wires' but didn't work. Searched so many questions on SO, didn't find a solution with Selenium 3.0.
Added the path of the folder that has the driver to System variables path and tried using DesiredCapabilities.
DesiredCapabilities cap = DesiredCapabilities.Firefox();
cap.SetCapability("marionette", true);
var driver = new RemoteWebDriver(cap);
Using Selenium 3.0, FF 47.0.1, gecko v0.11.1
Can someone help me with this issue.
Thanks.
Try this:
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService("C:\Git\AutomationTest\Drivers");
IWebDriver driver = new FirefoxDriver(service);
I updated Firefox to Version 49.0.2 and updated my selenium driver to 3.0.0 from nuget packages. Added Firefox path to the system path variables. That's it I didn't change anything else in my coding i.e, declaration of Firefox. After updating I'm having too many issues like wait and System.Net.Web exception. I need to fix some of my test cases but it works.
Seen a lot of questions regarding Selenium 2.53.1 and Firefox 47.0.1, but none in regards to the Selenium 3 Beta release. I am attempting to use the new gecko/marionette Firefox webdrivers, but even though I have the driver location in; my environment path, Firefox install folder in programs, and give the drive location in the system environment, it will still not work correctly.
Error:
The geckodriver.exe does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at https://github.com/mozilla/geckodriver/releases.
Using:
Selenium 2.53.1 server
Firefox 48
Selenium 3 Beta DLLs
Window 10
Example Code 1
using OpenQA.Selenium.Firefox;
public static class FirefoxInitialise
{
public static IWebDriver Driver {get; set;}
Driver = new FirefoxDriver();
}
Also attempted the below:
using OpenQA.Selenium.Firefox;
public static class FirefoxInitialise
{
public static IWebDriver Driver {get; set;}
FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = #"C:\Program Files\Mozilla Firefox\firefox.exe";
FirefoxOptions options = new FirefoxOptions();
TimeSpan time = TimeSpan.FromSeconds(10);
Driver = new FirefoxDriver(service, options, time);
}
Any help or insight as to why the code still won't detect this driver would be greatly appreciated it.
Try to put the geckodriver.exe in your path: C:\Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug
you can find geckodriver.exe at this link:
https://github.com/mozilla/geckodriver/releases
Install the Selenium.Firefox.Webdriver NuGet package.
This will copy geckodriver.exe to the bin folder.
This solution may helps you fix problem: ( It did help me though)
public class TestResult {
private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;
private bool acceptNextAlert = true;
[TestInitialize]
public void SetupTest() {
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(#"C:\geckodriver", "geckodriver.exe");
service.Port = 64444;
service.FirefoxBinaryPath = #"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
driver = new FirefoxDriver(service);
baseURL = "http://localhost:49539";
verificationErrors = new StringBuilder();
}
}
REFERENCE
Check out #juver-malpartida 's Answer
If u include the geckodriver.exe in your project and you copy it to your target directory when you compile, the webdriver works as it did in previous versions.
This is for who is the begginers ill write the short version in the below after this post :)
The easiest way first you need to download all drivers what browser you use and extract all drivers into e.g. C:\Selenium\ there and go to VisualStudio and from here add Selenium packages shown in the pictures Click here in console write this code PM>Install-Package Selenium.WebDriver after that copy your drivers directory and from windows search tab type variables and select (Edit the system environment and variables) shown pic2 in this windows you will have advanced tab at the below click Environment Variables... here you have System variables section find PATH or Path Variable and edit it be careful don't delete it!! next click new - paste directory of drivers and click all windws ok button that's all. restart your VS programm and ckeck it. After this you don't have to add director path into your Constructor like
IWebDriver driver2 = new InternetExplorerDriver(#"C:\Selenium");
One more thing don't forget to import files.
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
For more Advanced IT guys.
Add into Environment Path Yours drivers directory.
VisualStudio install Selenium using NuGet package manager in console mode or how would u like.
PM> Install-Package Selenium.WebDriver
restart VS.
In your project, click on Tools --> Nuget Package Manager --> Manage NuGet Packages for Solution...
The in the open Window
Browse
Selenium.FireFox.WebDriver
Select Project and your project Name and click on install.
This is the easer form to put the driver on your Selenium Project.
I would try this:
First, make sure your C# project runs the same .NET framework version as the Client Driver's libraries (when you download them from Selenium HQ, you should see the framework version they're based on). I have 3.5 and 4.0 as of 9/15/2017, so I had to downgrade my C# project to .NET 4.0 to use the 4.0 Client Driver libraries.
In your code, when creating the Firefox Driver Service, make sure you explicitly specify the path to where your geckodriver.exe is located. See how I've added a path parameter to your call to FirefoxDriverService.CreateDefaultService:
using OpenQA.Selenium.Firefox;
public static class FirefoxInitialise
{
private static IWebDriver Driver{get; set;}
public static IWebDriver Init()
{
// I'm assuming your geckodriver.exe is located there:
// #"C:\MyGeckoDriverExePath\geckodriver.exe"
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(#"C:\MyGeckoDriverExePath\");
service.FirefoxBinaryPath = #"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary
FirefoxOptions options = new FirefoxOptions();
TimeSpan time = TimeSpan.FromSeconds(10);
Driver = new FirefoxDriver(service, options, time);
return Driver;
}
}
So you can use :
IWebDriver driver = FirefoxInitialise.Init();
If you have the executable in path environment variable, it likely means that it doesn't have permission to access it. As a workaround, try to run Visual Studio as administrator.
Or you could move it to somewhere that it have permission. Eg:
var service = FirefoxDriverService.CreateDefaultService(#"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;
var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);
_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));
There I put the binaries in D:\tmp\Binaries\ and specified it in the code to check the geckodriver there.
I kept getting this error also & the only thing I could do to finally fix it (not sure if it's the best answer for everyone who has this issue) was I placed the geckodriver.exe in my main Library directory, then I opened webdriver.py:
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py
found the line where it says:
executable_path="geckodriver", firefox_options=None,
and changed it to:
executable_path="/Library/geckodriver", firefox_options=None
I was having a Visual Studio 2017 issue where the build would fail because it was looking in a non existent directory for the geckodriver exec. I also had added it using nuget pack manager. What I found was in Visual Studio->Project->Properties->Build it works if you make the build independent of the architecture: Platform target is Any CPU & either leave the other check boxes (Prefer 32-bit, Allow unsafe code, Optimize code) all unchecked or just have Prefer 32-bit checked (which is the default on my system).
btw:my Application was a .NET Framework 4.5.2 Console Application
This solution worked for me for VS2017. Just copied the geckodriver.exe to my project folder like this:
C:\Users\pedne\Desktop\C#\FirstSolution\FirstSolution\bin\Debug
I am a new selenium user trying to launch Firefox from C# with selenium version 2.33.0
and Firefox version 20
Here is my code to launch firefox
var capability = DesiredCapabilities.Firefox();
Driver = new RemoteWebDriver(new Uri(Environment.SeleniumGridHubUrl), capability);
Here is my code to goto Url
Driver.Navigate().GoToUrl(Environment.Hostname[domain] + pathAndQuery);
The Firefox browser is launched successfully, however it is blank and does not display the webpage.
What I am missing here?
In your case if the gotourl is blank then you would get blank page.
This is what I usually do:
IWebDriver driver;
driver = new FirefoxDriver();
String baseURL = "http://localhost";
driver.Navigate().GoToUrl(baseURL + "/somepage.aspx");
This can happen with non compatible versions of Firefox. Make sure you turn off auto-update in the Firefox settings to avoid the latest version being installed by default.
To test that it is Firefox at fault change your WebDriver to another driver such as InternetExplorerDriver, ChromeDriver or SafariDriver.
Until Web Driver is supported, you can always downgrade your version of Firefox. Hope this helps.