Archiv der Kategorie: Selenium/WebDriver

Selenium Grid in Amazon AWS

Beitrag von Ragavan in SeConf:

Keyfindings in Video

  • Grid Hub sollte liegen auf: c3.8xlarge ($3.39/Std.)
  • Grid Nodes sollten liegen auf: c3.xlarge (24 Firefox-Instanzen gleichzeitig) ($0.42/Std.)
    • high network bandwidth/low CPU/memory reicht aus
  • SeleniumGridScaler zum testlast-basierten AWS Autoscaling
  • kille alle browser, die länger als 10 min laufen (tests sollten generell ja bei Weitem nicht so lange dauern)

Preisvergleich der Selenium Cloud-Anbieter

Zum Benutzen von Selenium muss man keinen eigenen Selenium-Server betreiben, man kann sich also die Administration (Wartung des Betriebssystem, Updaten von Selenium und Browser-Störungsbehandlung) und überhaupt die Hardware ersparen. Man kann ganz einfach die Testskripte schreiben, die den Selenium-Client in der gewünschten Sprache (z.B. PHP Selenium client) nutzen und mit diesem dann zu einem Selenium Cloud-Anbieter „funken“. Unter „Functional Test Services“ findet sich hier eine Liste der Selenium-Cloud-Anbieter. Die Preismodelle sind recht ähnlich, die Preise jedoch ziemlich unterschiedlich. Leider bietet kein Anbieter einen On-Demand-Service an, also ohne laufende Grundgebühr und Abrechnung nach tatsächlich genutzten Minuten. Amazon, als das Paradebeispiel für Cloud-Service-Provider bietet ein solches Abrechnungsmodell bei EC2 an:
SauceLabs
Die günstigste Lizenz für’s automatische Testen kostet $199/Monat bei monatlicher Kündbarkeit (bei einem Jahresvertrag kostet diese Lizenz immerhin noch $149/Monat): SauceLabs Preisliste
BrowserStack
Die günstigste Lizenz für’s automatische Testen kostet für Unternehmen (Freelancer sind günstiger dran) 79$/Monat bei monatlicher Kündbarkeit (bei einem Jahresvertrag kostet diese Lizenz $59/Monat): BrowserStack-Preisliste
TestingBot
Die günstigste Lizenz für’s automatische Testen kostet $30/Monat bei monatlicher Kündbarkeit (bei einem Jahresvertrag kostet diese Lizenz $20/Monat). Da sind dann auch 300 Freiminuten mit dabei, pro Tag also 10 Minuten: TestingBot Preisliste
crossbrowsertesting
Die günstigste Lizenz für’s automatische Testen kostet für Unternehmen $80/Monat bei monatlicher Kündbarkeit (bei einem Jahresvertrag kostet diese Lizenz immerhin noch $60/Monat). Auch bei crossbrowsertesting haben Freelancer günstigere Konditionen: crossbrowsertesting Preisliste

Selenium Fehlermeldung: "Message : Exception: Cannot start the driver service on http://localhost:XYZ"

Die komplette Fehlermeldung findet sich am Ende dieses Artikels, zur besseren Auffindbarkeit durch Google. Beim einen Rechner hatte ich das Problem und beim anderen nicht. Man kann diese SO-Frage als Checkliste nutzen, woran das liegen könnte:
* Neustart von Windows
* Firewall temporär abschalten
* genügend Platz auf C-Laufwerk sicherstellen
* Firefox ist aktuell und auf beiden Rechnern in der gleichen Version vorhanden.
Bei mir haben all diese Dinge nicht das Problem behoben. Ich vermute, dass der Fehler tatsächlich im Umfeld von .NET zu finden ist, denn auch bei mir läuft Selenium auf .NET, wie beim Fragesteller auf SO. Und in dieser SO-Antwort wird ja auch ein Versionsunterschied in Visual Studio als Ursache vermutet. Und es liegt auch spezifisch am Internet Explorer, denn mit Firefox funtkioniert es wunderbar. Da es mir an der Stelle genügt, den Firefox weiterzubenutzen, und den IE zu ignorieren, werde ich das Problem nicht weiter eingrenzen. Wer die Lösung gefunden hat – bitte einen Kommentar hinterlassen.
RunHealth.Fail(string message) started. Message : Exception: Cannot start the driver service on http://localhost:12208/| Exception : Cannot start the driver service on http://localhost:12208/| Stack : at OpenQA.Selenium.DriverService.Start() in c:\Projects\webdriver\dotnet\src\webdriver\DriverService.cs:line 234 at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\DriverServiceCommandExecutor.cs:line 77 at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1177 at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1114 at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 141 at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(InternetExplorerDriverService service, InternetExplorerOptions options, TimeSpan commandTimeout) in c:\Projects\webdriver\dotnet\src\webdriver\IE\InternetExplorerDriver.cs:line 143 at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(String internetExplorerDriverServerDirectory, InternetExplorerOptions options, TimeSpan commandTimeout) in c:\Projects\webdriver\dotnet\src\webdriver\IE\InternetExplorerDriver.cs:line 120 at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(String internetExplorerDriverServerDirectory, InternetExplorerOptions options) in c:\Projects\webdriver\dotnet\src\webdriver\IE\InternetExplorerDriver.cs:line 108 at AutomationLibraryWebSelenium.GeneralSeleniumFunctions.NavigateToUrl(String url, String browser, Boolean isStartDriver, Boolean isOpenInNewWindow, Dictionary`2 parameterList) in d:\Builds\86\264\src\CodedUITests\DEV\Framework\Testautomation\AutomationLibraryWebSelenium\GeneralSeleniumFunctions.cs:line 291 at AutomationGeneral.Actions.StartProgram(ActionParameter actionParameter) in d:\Builds\86\264\src\CodedUITests\DEV\Framework\Testautomation\AutomationGeneral\Actions.cs:line 309 at AutomationGeneral.TestStep.Execute(RepositoryItemOfCurrentTestStep repositoryItem, Nullable`1 processID) in d:\Builds\86\264\src\CodedUITests\DEV\Framework\Testautomation\AutomationGeneral\TestBase\TestStep.cs:line 211 at AutomationGeneral.TestStep.Execute() in d:\Builds\86\264\src\CodedUITests\DEV\Framework\Testautomation\AutomationGeneral\TestBase\TestStep.cs:line 117