J'ai donc un fichier .feature dans lequel j'ai ajouté 4 scénarios.C# Les tests Selenium WebDriver échouent lors de l'exécution consécutive mais réussissent lorsqu'ils sont exécutés individuellement
fichier .feature
Feature: BleKeys beheren
Het beheren van BLE-keys
d.m.v. de WebInterface.
@notfs
Scenario: BLE-key toevoegen aan database
Given I'm at the BleKey/Create page.
And I have entered acceptable BLE-data.
When I press Create
Then The BLE-key should be added to the database.
@notfs
Scenario: BLE-key data aanpassen
Given There is a BleKey in the database.
And I'm at the BleKey/Edit page of that BleKey
When I edit the MAC-Adress
And I edit the Conditional Report
And I edit the Flag
And I edit the Distance
And I edit the Reference
And I edit the ExtraCfg
And I press Save
Then The BleKey should have changed correctly.
@notfs
Scenario: BLE-key data verwijderen
Given There is a BleKey in the database.
And I navigate to the Delete page of that BleKey
When I press Delete
Then The BleKey should be deleted.
@notfs
Scenario: BLE-key data van 1 sleutel bekijken
Given There is a BleKey in the database.
And I navigate to the Details page of that BleKey
Then The correct data of that BleKey should be displayed
Maintenant, quand je lance ces tests dans Visual Studio (ReSharper Unité Sessions Fenêtre d'essai) tous réussissent individuellement, mais lorsqu'il est exécuté de façon consécutive le premier réussit, mais un test consécutif échoue avec l'exception suivante:
OpenQA.Selenium.WebDriverException: erreur inattendue. System.Net.WebException: Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: Aucune connexion n'a pu être établie car la machine cible activement refusé 127.0.0.1:5595
Comme vous peut voir le test tente de se connecter à une adresse IP locale-alors qu'il devrait être à l'URL naviguait de base:
http://localhost:58759/ + contrôleur + méthode en fonction du test. Je crée l'instance de WebDriver dans mon fichier d'étapes.
Comme si:
public class BleKeyBeherenSteps
{
public static RemoteWebDriver RemoteWebDriver = new ChromeDriver();
public WebinterfaceSelenium SeleniumTest = new
WebinterfaceSelenium(RemoteWebDriver);
public Navigate Navigate = new Navigate(RemoteWebDriver);
public Check Check = new Check(RemoteWebDriver);
public Edit Edit = new Edit(RemoteWebDriver);
public Delete Delete = new Delete(RemoteWebDriver);
private readonly BeheerContext _db = new BeheerContext();
}
Et dans mes méthodes naviguer comme ceci:
Driver.Navigate().GoToUrl(Adress + BleKeyIndexUrl);
Où Adresse = "http://localhost:58759/"
Et BleKeyIndexUrl = "BleKeys/Index"
Donc, pour Pour une raison quelconque, WebDriver navigue vers une adresse IP locale au lieu de l'adresse localhost. Editer: Après chaque test, je ferme le pilote avec: Driver.Quit(); Je suppose que pour une raison quelconque, après le premier test, la propriété Driver.Url est perdue.
J'ai rendu le RemoteWebDriver non statique en initialisant les propriétés dans le constructeur et maintenant cela fonctionne très bien. Merci de répondre – Jeroen
Je devrais lire sur les champs statiques et les variables :) – Jeroen
@Jeroen: Désolé, je ne peux pas aider avec le problème de port sur la machine distante. Je suggère que votre problème actuel a évolué au point où une nouvelle question de SO est nécessaire car il s'agit maintenant de configurer des numéros de port locaux de test cohérents sur une machine de test dédiée. Je suppose que vous savez déjà que le numéro de port utilisé par un site Web de développement est défini dans l'onglet Web du projet Web? Est-ce une différence Debug/Release? – camelCase