26

Ich arbeite an Automation Framework mit WebDriver mit C#. Es funktioniert gut mit Firefox, aber nicht mit IE."IEDriverServer existiert nicht" Fehler beim Ausführen Selenium Test mit C# in Windows 7

Ich erhalte die folgende Fehlermeldung:

IEDriverServer.exe does not exist-The file c:\users\administrator\documents\visual studio 2010\projects\TestProject1\TestProject1\bin\Debug\IEDriverServer.exe does not exist. The driver can be downloaded at http://code.google.com/p/selenium/downloads/list

Ich benutze IE 9 und Windows 7.

IWebDriver driver = new InternetExplorerDriver(); 
driver.Navigate().GoToUrl("http://www.google.co.uk"); 
IWebElement queryBox = driver.FindElement(By.Name("q")); 
queryBox.SendKeys("The Automated Tester"); 
queryBox.SendKeys(Keys.ArrowDown); 
queryBox.Submit(); 

Siehe auch this screenshot.

+0

Kopieren Sie es einfach in das Ausgabeverzeichnis Bin \ Debug, wenn es nicht bereits dort ist. –

Antwort

11

Per Jim Evans (der auf IEDriverServer arbeitet)

The .NET bindings don't scan the %PATH% environment variable for the executable. That means for the .NET bindings only, the IEDriverServer.exe is expected to either be found in the same directory as the .NET bindings assembly, or you must specify the directory where it can be found in the constructor to the InternetExplorerDriver class.

Failure to do one of these things (or to set the UseInternalServer property in the InternetExplorerOptions class) will cause the .NET IE driver implementation to throw an exception. This is strictly by design, as we want people to begin using the standalone IEDriverServer.exe, and the ability to use an "internal" or "legacy" version of the server will be removed in a future release.

https://groups.google.com/forum/?fromgroups#!topic/webdriver/EvTyEPYchxE

+0

Können Sie mir mit dem Codebeispiel helfen, IEDriverServer.exe mit C# zu binden. Ist es so System.Environment.SetEnvironmentVariable ("webdriver.ie.driver", "D: //Software//IEDriverServer.exe") ; IWebDriver driver = neuer InternetExplorerDriver(); – Pat

+0

Ich habe nicht in C# -Bindungen gearbeitet. Eine Möglichkeit, diesen externen Code aufzulösen, besteht jedoch darin, diese Variable beim Starten von Selenium Jar zu übergeben. Wie java -jar selen-server.jar -Dwebdriver.ie.driver = "D: //Software//IEDriverServer.exe" –

+0

Es gibt jetzt inoffizielle NuGet-Pakete für [Chrome] (https://www.nuget.org/ Pakete/Selenium.WebDriver.ChromeDriver /) und [IE] (https://www.nuget.org/packages/Selenium.WebDriver.IEDriver/); Diese fügen die Treiber zu Ihrem Paketverzeichnis hinzu, fügen diesen Links in Ihrem Testprojekt hinzu und legen "Copy if newer" fest. Rufen Sie dann einfach die Überladungen des Konstruktors auf und übergeben Sie "." für das aktuelle Verzeichnis * (aufgrund des oben genannten Problems% PATH%) *; ex: 'ScenarioContext.Current [" browser "] = neuer ChromeDriver (". ");' Mit [NCrunch] (http://www.ncrunch.net/) musste ich ihn nicht konfigurieren, um die Dateien zu kopieren . – Damon

1

Wenn Sie mit Visual Studio und C# arbeiten ich meine NareshScaler nuget Paket aktualisiert haben IEDriverServer, ChromeDriver etc automatisch zu installieren das heißt, Sie können schneller loslegen.

http://nuget.org/packages/NareshScaler

+0

Können Sie mir helfen, es zu tun, ohne NareshScaler Paket mit C# Code – Pat

16

Hier ist ein einfaches C# Beispiel dafür, wie die InternetExplorerDriver nennen die IEDriverServer.exe verwenden.

Refaktor nach Ihren Bedürfnissen.

Hinweis: die Verwendung von driver.Quit(), die sicherstellt, dass der IEDriverServer.exe-Prozess geschlossen wird, nachdem der Test abgeschlossen ist.

http://selenium-release.storage.googleapis.com/index.html:

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using OpenQA.Selenium.IE; 

namespace SeleniumTest 
{ 
    [TestClass] 
    public class IEDriverTest 
    { 
     private const string URL = "http://url"; 
     private const string IE_DRIVER_PATH = @"C:\PathTo\IEDriverServer.exe"; 

     [TestMethod] 
     public void Test() 
     { 
      var options = new InternetExplorerOptions() 
      { 
       InitialBrowserUrl = URL, 
       IntroduceInstabilityByIgnoringProtectedModeSettings = true 
      }; 
      var driver = new InternetExplorerDriver(IE_DRIVER_PATH, options); 
      driver.Navigate(); 
      driver.Close(); // closes browser 
      driver.Quit(); // closes IEDriverServer process 
     } 
    } 
} 
+1

Vielen Dank Ralp .. Es funktioniert jetzt gut. – Pat

20

The IEDriverServer.exe (sowie ChromeDriver.exe) kann heruntergeladen werden.

Damit diese mit Ihren Selenium-Tests funktionieren, fügen Sie die .exe-Datei in Ihr Testprojekt ein und legen Sie die Eigenschaften auf "Immer kopieren" fest.

HINWEIS: Sie müssen den Dialog Datei hinzufügen anpassen, um .exe-Dateien anzuzeigen.

Dadurch wird der Fehler behoben.

0
 public IWebDriver IEWebDriver() 
    { 
     var options = new InternetExplorerOptions(); 
     options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
     webDriver = new InternetExplorerDriver(ConfigurationSettings.AppSettings["IDEServerPath"].ToString(), options);//Path of ur IE WebDriver,Here I stored it in a AppConfig File 
     return webDriver; 
    } 
1

Code für WebDriver mit Java zum Ausführen mit IE. Ich glaube, das Konzept könnte hilfreich sein für Sie mit C#:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); 
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);  
File file = new File("C:\\Program Files\\Internet Explorer\\iexplore.exe"); 
System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
driver = new InternetExplorerDriver(capabilities); 

Wenn obige Code funktioniert nicht die anstelle von "File file = new File (" C folgende verwenden: \ Programme \ Internet Explorer \ iexplore. exe ");":

File file = new File("F:\\Ripon\\IEDriverServer_Win32_2.25.2\\IEDriverServer.exe"); 

[Hinweis: Die Version von IEDriverServer und Windows (32 oder 64 Bit) kann Individuum zu Individuum variiert]

+0

Ich habe "IEDriverServer_Win32_2.31.0.zip" heruntergeladen. Laut deinem Guide funktioniert es gut. Danke Ripon –

+0

@ user2027659: Es ist mir ein Vergnügen –

1

Pfad geben Sie nur bis Ordner, in dem Internetexplorer.exe befindet.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.IE; 
using System.IO; 

namespace Automation 
    { 
    class To_Run_IE 
    { 
     static void Main(string[] args) 
     { 
     //Keep Internetexplorer.exe in "D:\Automation\32\Internetexplorer.exe" 
      IWebDriver driver = new InternetExplorerDriver(@"D:\Automation\32\"); \\Give path till the exe folder 
     //IWebDriver driver = new Firefoxdriver() 
     driver.Navigate().GoToUrl("http://www.google.com/"); 
     driver.Manage().Window.Maximize();   
     IWebElement query = driver.FindElement(By.Name("q")); 
     query.SendKeys("Cheese");   
     query.Submit();   
     System.Console.WriteLine("Page title is: " + driver.Title); 
     driver.Quit(); 
    } 
} } 
+0

Hallo Nithin und willkommen auf der Website. Könnten Sie darüber nachdenken, Ihre Antwort ein wenig auszuweiten, um sie vollständiger zu machen? Es gibt einen Leitfaden für gute Antworten [hier] (http://stackoverflow.com/help/how-to-answer) - im Allgemeinen bevorzugen wir ein wenig mehr Erklärung als eine einzeilige Antwort. – starsplusplus

Verwandte Themen